Benvenuto! Per postare e godere delle funzionalità del forum registrati, occorrono pochi secondi ed è gratis!

Aiuto Nella Definizone

Iscritto
Messaggi: 21
Discussioni: 4
Registrato: 05-2013
Reputazione:
0

Mix: 0
Salve ragazzi, ho un problema che mi fa salire la rabbia più assoluta :@.
In pratica sto cercando di far definire una stringa ovvero mi spiego.

Codice:
using System;

using GameServer.Virtual_Objects.Room;
using GameServer.Virtual_Objects.User;
using GameServer.Networking.Packets;

namespace GameServer.Networking.Handlers
{
    class HANDLE_SHOP_COUPON : PacketHandler
    {
        public override void Handle(virtualUser User)
        {
            string Coupon = getBlock(0);
            if(Coupon == "11111111-1111-1111" || Coupon == "22222222-2222-2222" )
            {
               int Rand = new Random().Next(0, 0);
           string Code = null ;
           int Days = 1 ;
            if (Coupon == "1111-1111-1111-1111")
            {
               if (Rand == 0) { Code = "DB10"; Days = 7; }
           }
            User.AddOutBoxItem(Code, Days);
            User.Inventory = new InventoryItem[105];
            User.LoadItems();
            User.send(new PACKET_RANDOM_BOX(User, Code, Days));
            }
           }
        }
}

Vedete quello "String Code = Null" E "Int Days = 1"? Ecco quei 2 disgraziati mi stanno facendo dannare l'anima perché Al posto di leggere il Code Contenuto in "If (Rand == 0) { Code = "DB10"; Days = 7; }" e il Days "f (Rand == 0) { Code = "DB10"; Days = 7; }" Mi mette Code Vuoto e Giorno 1. Devo Fare in modo che Code e days vengono letti da if Rand.. Cosa è che sbaglio o che dimentico di aggiungere? Grazie in anticipo

23/11/2014, 11:51
#1
Cerca

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Reputazione:
106

Mix: 3,737
Ciao, sto leggendo sul cellulare quindi spero di capire bene il codice, non sono sicuro di quello che vuoi, però tieni conto che il codice coupon deve essere uno di quei due li (111111 oppure 222222..). Hai messo tu che Random deve andare da 0 a 0? A che serve un random così? Dovrebbe dare sempre 0 immagino


digger
23/11/2014, 12:27
#2
Cerca

Iscritto
Messaggi: 21
Discussioni: 4
Registrato: 05-2013
Reputazione:
0

Mix: 0
Il codice è fatto interamente da me, il random ho messo 0 0 apposta che per ora deve leggermi solo 0 cioè il primo if. Il problema non è questo ma il fatto che code non mi viene letto da if ma mi viene letto da string, faccio un esempio
Se metto al posto di string code = null il risultato sara niente, vuoto,0.
Se metto string code = "Db10" il risultato sarà DB10 però lo legge da string e non dagli if ovvero dai random

Inviato dal mio SM-T311 utilizzando Tapatalk

23/11/2014, 15:49
#3
Cerca

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Reputazione:
106

Mix: 3,737
sono tornato a casa e mi sono guardato meglio il tuo codice, e come ti dicevo io devi assicurarti che coupon abbia il valore giusto se no nell'if non ci entra, infatti era questo il tuo problema, guarda bene cosa hai scritto nel codice, ti metto qui sotto il valore del primo if e del secondo, vedi che sono diversi? quindi se entra nel primo if non entra nel secondo e se fosse giusto il secondo non entrerebbe comunque nel primo, come a dire non funzionerà mai cosi:

Citazione:if (Coupon == "11111111-1111-1111"
if (Coupon == "1111-1111-1111-1111")



digger
23/11/2014, 23:58
#4
Cerca
(Questo messaggio è stato modificato l'ultima volta il: 24/11/2014, 10:44 da Rokys091.)

Iscritto
Messaggi: 21
Discussioni: 4
Registrato: 05-2013
Reputazione:
0

Mix: 0
Purtroppo ora non ho modo di provarlo ma, essendo che pure tu puoi, Prova a vedere il coupon come viene mandato dal client. Il client non manda 1111-1111-1111-1111 ma ben si 11111111-1111-1111. Comunque proverò appena avrò tempo libero, anche se credo che il problema sia dovuto a una mal sistemazione di string code e int days.

[EDIT]
Avendo controllato ora il codice postato sul forum ho notato l'errore che però ricordo di aver sistemato a seguito di una controllata. Ti farò sapere appena torno a casa Happywide

24/11/2014, 10:41
#5
Cerca

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Reputazione:
106

Mix: 3,737
Sono le 21.58 e ancora non sono tornato a casa.. La vedo male per il controllo Smile prima delle 23 non sarò lì di sicuro


digger
24/11/2014, 23:00
#6
Cerca

Iscritto
Messaggi: 21
Discussioni: 4
Registrato: 05-2013
Reputazione:
0

Mix: 0
Ho provato e non ha funzionato fin quando ho messo string code e int day sopra string coupon Posso dire finalmente che la il codice coupon di warrock funziona grazie dell'aiuto.

P.s = Ti passo il resto tramite email appena posso, adesso non credo che potrei sbagliare a inviare le cose "aglio per cipolla" Ciao Happywide

24/11/2014, 23:56
#7
Cerca

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Reputazione:
106

Mix: 3,737
arrivato a casa, mi sono messo al lavoro.
Ho notato che esisteva già un sorgente per la gestione del coupon, sinceramente i coupon non me li sono mai cagati infatti non so bene nemmeno come devono funzionare (anche se ora un po' il meccanismo l'ho capito guardando il sorgente).
Ho trovato questo : "HANDLE_COUPON_BUY.cs" , non sapendo se faceva altro l'ho copiato in uno nuovo che ho chiamato "HANDLE_SHOP_COUPON.cs" (preso l'idea dal tuo source).
Ho cambiato la riga iniziale perchè generava un eccezione :
Codice:
int ID = Convert.ToInt32(getBlock(0));

è diventata
Codice:
string ID = getBlock(0);

Infatti il blocco 0 che arriva col pacchetto è una stringa, non un intero, ma cosa arriva?
Ecco cosa arriva.
Se tu scrivi il coupon:
1234-5678-8765-4321
nel codice, nella variabile ID, ti arriva:
12345678-8765-4321

in pratica si perde per la strada il primo "meno"

Allora tanto per fare una prova ho messo un po' di ID a casaccio ( che trovi qui sotto) e quindi li ho inseriti in warrock per vedere cosa succedeva, per essere piu precisi, ho inserito "2234-5678-8765-4321" (che corrisponde alla seconda linea nel codice qui sotto) e infatti nel gioco mi sono ritrovato l'MP5K_RED per 3 giorni , direi che è stato un successo ! Happywide

A sto punto non so cosa volevi ottenere tu (visto che hai messo pure un Random nel tuo codice) ma direi che questo è un buon punto di partenza, fammi sapere.

Qui sotto il codice che ho usato io:

    C++ Programming
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. using GameServer.Networking.Packets;
  7. using GameServer.Virtual_Objects.User;
  8.  
  9. namespace GameServer.Networking.Handlers
  10. {
  11. class HANDLE_SHOP_COUPON : PacketHandler
  12. {
  13. public override void Handle(virtualUser User)
  14. {
  15. string ID = getBlock(0);
  16. int Days = 0;
  17. int CouponToRemove = 0;
  18. string WeaponToBuy = null;
  19. #region Calculate
  20. switch (ID)
  21. {
  22. case "12345678-8765-4321": WeaponToBuy = "DB16"; Days = 3; CouponToRemove = 5; break;
  23. case "22345678-8765-4321": WeaponToBuy = "DB33"; Days = 3; CouponToRemove = 5; break;
  24. case "32345678-8765-4321": WeaponToBuy = "DB15"; Days = 3; CouponToRemove = 5; break;
  25. case "42345678-8765-4321": WeaponToBuy = "DF71"; Days = 7; CouponToRemove = 15; break;
  26. case "52345678-8765-4321": WeaponToBuy = "CI01"; Days = 7; CouponToRemove = 15; break;
  27. case "62345678-8765-4321": WeaponToBuy = "DC76"; Days = 7; CouponToRemove = 15; break;
  28. case "72345678-8765-4321": WeaponToBuy = "DD04"; Days = 14; CouponToRemove = 40; break;
  29. case "82345678-8765-4321": WeaponToBuy = "DC07"; Days = 14; CouponToRemove = 40; break;
  30. case "92345678-8765-4321": WeaponToBuy = "DG28"; Days = 14; CouponToRemove = 70; break;
  31. default: User.disconnect(); break;
  32. }
  33. #endregion
  34. if (User.Coupons >= CouponToRemove)
  35. {
  36. int InventorySlot = User.InventorySlots;
  37. if (InventorySlot > 0)
  38. {
  39. User.Coupons -= CouponToRemove;
  40. DB.runQuery("UPDATE users SET coupons='" + User.Coupons + "' WHERE id='" + User.UserID + "'");
  41. if (WeaponToBuy == null) User.disconnect();
  42. User.AddItem(WeaponToBuy, Days);
  43. User.send(new PACKET_COUPON_BUY(WeaponToBuy, User));
  44. User.send(new PACKET_COUPON_EVENT(User));
  45. User.reloadCash();
  46. }
  47. else
  48. {
  49. User.send(new PACKET_ITEMSHOP(PACKET_ITEMSHOP.ErrorCodes.InventoryFull, "NULL"));
  50. }
  51. }
  52. else
  53. {
  54. User.send(new PACKET_COUPON_BUY(PACKET_COUPON_BUY.ErrorCode.NotEnoughCoupons));
  55. }
  56. }
  57. }
  58. }




digger
25/11/2014, 1:17
#8
Cerca

Iscritto
Messaggi: 21
Discussioni: 4
Registrato: 05-2013
Reputazione:
0

Mix: 0
Ciao digger ho notato che hai fatto un source completamente differente al mio, tu hai messo che digitando il codice ti dal'arma richiesta ma ti toglie i coupon, il Coupon ovvero promo code lo dice gia da se che è un codice promozionale. Io ho risolto come detto però usa i random "Per Ora" quindi Happywide
Tutte e 2 funzionano il mio a random e il tuo a Togliere i coupon, Dovrei fare che i coupon lavorano come in Handle_Outbox che aggiungono arma in outbox ma non a random. Ti farò sapere presto

25/11/2014, 10:20
#9
Cerca

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Reputazione:
106

Mix: 3,737
Non ho capito niente devo rileggere con calma quando ho tempo Happywide
Comunque il codice non è mio come ti dicevo ho preso quello che già c'era, lo solo aggiustato per i miei scopi Smile


digger
25/11/2014, 10:24
#10
Cerca


Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  [aiuto] No segnale su sapphire R9 280. Pocciox 5 928 14/01/2015, 22:11
Ultimo messaggio: digger
  aiuto portatile oirad94 1 684 22/12/2014, 16:27
Ultimo messaggio: Admin
  Aiuto Connessione w4rh4ck 50 3,662 25/07/2014, 11:28
Ultimo messaggio: Pocciox



Utenti che stanno guardando questa discussione: 1 Ospite(i)