Discussione [AUTO]Mettere un limite ad npc che da item con value (leggete per capire)

Stato
Discussione chiusa ad ulteriori risposte.

Ares™

Utente Emerald
11 Giugno 2011
1,873
87
170
563
Salve, vorrei sapere come fare per far si che, quando si apra l'NPC che da item inserendo value, se si inserisce un determinato value non dia quell'item, si può? Spero di sì. Grazie in anticipo per le risposte.
 
Si che si può... Metti
Codice:
if asd == value then
say ("mi spiace non posso darti questo item")
end
dove asd è la variabile del tuo input e value il value dell'item.
 
Ci hai messo il resto dello script vero? >.>
Naturalmente, eccolo,
say ("Vuoi ricevere un item?")
say_title ("Ricevi item")
local s = select ("Si" , "No")
if s == 1 then
say_title ("Inserisci il value dell'item che vuoi")
local item = input ()
pc.give_item2 ("" .. item .. "")
elseif s == 2 then
say ("Va bene, torna quando vuoi...")
if item == 50512 then
say ("mi spiace non posso darti questo item")
return
end
Ci sono errori?
 
Ultima modifica:
Corretto:

PHP:
say_title ("Ricevi item")
say("")
say ("Vuoi ricevere un item?")
say("")

local s = select ("Si" , "No")
if s == 1 then
      say_title ("Ricevi item")
      say("")
      say ("Inserisci il value dell'item che vuoi")
      say("")
      local item = input ()

      if item == 50512 or item <= 0 then
            say_title ("Ricevi item")
            say("")
            say ("Mi spiace, il value non è valido")
            say("")
      else
            pc.give_item2 (item)

            say_title ("Ricevi item")
            say("")
            say ("Hai ricevuto l'item richiesto!")
            say("")
            say_item_vnum (item)
            say("")
      end
else
      say_title ("Ricevi item")
      say("")
      say ("Va bene, torna quando vuoi...")
      say("")
end

Ti conviene sempre copiare la parte del titolo, altrimenti ti rimangono le finestre con scritta solo una riga che sono bruttissime a vedersi.
Devi fare il controllo sul value PRIMA di consegnarlo.
Devi controllare anche se il value è valido (io ho solo guardato che fosse almeno positivo)
Non usare un elseif sull'opzione di uscita perchè non è stabile, con un else copri ogni possibilità di errore: se hai più opzioni devi usare if opzione1, elseif opzione2, elseif opzione3 ELSE opzione4 :)

Ultima cosa: per usare le variabili basta scriverne il nome, non serve scrivere "" .. VAR .. "", rischi ancora che escano valori non numerici.


PS: controlla che funzioni "say_item_vnum", perchè l'ho scritto a memoria e non so se la sintassi è giusta :asd:
 
Grazie per l'aiuto funziona perfettamente! un ultima cosa, se volessi aggiungere un altro value "proibito", devo fare così?
if item == 50512 or 6545 or item <= 0 then

Giusto?
 
Grazie per l'aiuto funziona perfettamente! un ultima cosa, se volessi aggiungere un altro value "proibito", devo fare così?
if item == 50512 or 6545 or item <= 0 then

Giusto?

Quasi, devi scrivere:

PHP:
if item <= 0 or
   item == 50512 or 
   item == 35241 or 
   item == 95125 or 
   item == 98632 then

Sono numeri a caso, ma l'importante è che capisci come scriverlo :)
Puoi anche scriverlo su una riga, non cambia niente: "if item <= 0 or item == 50512 or item == 35241 or item == 95125 or item == 98632 then"

Con questo codice guardi se è vietato OPPURE se è minore di zero (e quindi senza senso). Poi puoi aggiungergli un controllo se maggiore del value più alto che hai nel db, se compreso in un range di value vietati.. quello che vuoi :)

Il range si scrive ".. or (item >= MIN and item <= MAX) or .."
 
Ultima modifica:
No niente non funziona, non da l'item
 
Copia il codice che usi, perfavore, dev'esserci un errore, forse un end spostato.. Possibile che sia anche errore mio, non l'avevo provato.
Te lo correggo al volo ^^
 
say_title ("Ricevi item")
say("")
say ("Vuoi ricevere un item?")
say("")


local s = select ("Si" , "No")
if s == 1 then
say_title ("Ricevi item")
say("")
say ("Inserisci il value dell'item che vuoi")
say("")
local item = input ()


if item == 50512 or item <= 0 then
say_title ("Ricevi item")
say("")
say ("Mi spiace, il value non è valido")
say("")
else
pc.give_item2 (item)


say_title ("Ricevi item")
say("")
say ("Hai ricevuto l'item richiesto!")
say("")
say_item_vnum (item)
say("")
end
else
say_title ("Ricevi item")
say("")
say ("Va bene, torna quando vuoi...")
say("")
end

uso questo, cioè quello che mi hai scritto tu
 
Ultima modifica:
PHP:
say_title ("Ricevi item")
say("")
say ("Vuoi ricevere un item?")
say("")


local s = select ("Si" , "No")
if s == 1 then
      say_title ("Ricevi item")
      say("")
      say ("Inserisci il value dell'item che vuoi")
      say("")
      local item = tonumber ( input ( "" ) )
      local item_count = 0


      if item == 50512 or item <= 0 then
            say_title ("Ricevi item")
            say("")
            say ("Mi spiace, il value non è valido")
            say("")
      else
            item_count = pc.count_item( item )
            pc.give_item2 (item)

            if pc.count_item( item ) == item_count + 1 then
                        say_title ("Ricevi item")
                        say("")
                        say ("Hai ricevuto l'item richiesto!")
                        say("")
                        say_item_vnum (item)
                        say("")
            else
                        say_title ("Ricevi item")
                        say("")
                        say ("Errore!")
                        say("")
            end
      end
else
      say_title ("Ricevi item")
      say("")
      say ("Va bene, torna quando vuoi...")
      say("")
end

Uhmmmm ho aggiunto il controllo dell'errore finale, fallo girare di nuovo e guarda cosa ti dice (ho anche convertito l'input)
 
PHP:
say_title ("Ricevi item")
say("")
say ("Vuoi ricevere un item?")
say("")


local s = select ("Si" , "No")
if s == 1 then
      say_title ("Ricevi item")
      say("")
      say ("Inserisci il value dell'item che vuoi")
      say("")
      local item = tonumber ( input ( "" ) )
      local item_count = 0


      if item == 50512 or item <= 0 then
            say_title ("Ricevi item")
            say("")
            say ("Mi spiace, il value non è valido")
            say("")
      else
            item_count = pc.count_item( item )
            pc.give_item2 (item)

            if pc.count_item( item ) == item_count + 1 then
                        say_title ("Ricevi item")
                        say("")
                        say ("Hai ricevuto l'item richiesto!")
                        say("")
                        say_item_vnum (item)
                        say("")
            else
                        say_title ("Ricevi item")
                        say("")
                        say ("Errore!")
                        say("")
            end
      end
else
      say_title ("Ricevi item")
      say("")
      say ("Va bene, torna quando vuoi...")
      say("")
end

Uhmmmm ho aggiunto il controllo dell'errore finale, fallo girare di nuovo e guarda cosa ti dice (ho anche convertito l'input)
Ok grazie ora funziona
 
Allora era solo perchè mancava la conversione da stringa a intero >.>
Adesso ti ho aggiunto tutti i controlli, di solito non li pubblico xD
 
Stato
Discussione chiusa ad ulteriori risposte.
Indietro
Top Bottom