Domanda Problema con pc.get_empire()

Stato
Discussione chiusa ad ulteriori risposte.

gianfro95x

Utente Emerald
4 Gennaio 2010
957
163
80
466
Buonasera a tutti, vorrei provare a fare un piccolo script dove se io sono del regno rosso e uccido un player del mio stesso regno mi da 10 punti mentre se uccido un player di un'altro regno non mi da punti. Avevo provato a buttare giù qualche riga di codice ma non riesco a runnarla perchè mi da errore e non capisco dove sia il problema di sintassi.
Queste sono le righe che ho provato a tirare giù..
Codice:
when kill with npc.is_pc() begin
            if npc.get_empire() == pc.get_empire() then
                pc.setqf("punti", pc.getqf("punti")+10)
                say_reward("Hai ottenuto: "...pc.getqf("punti")..."punti")
            else
                say_reward("Non puoi ricevere punti se uccidi un player di un'altro regno")
            end
        end

Ho provato a cercare se esistesse una funzione già creata nel questlib e ho trovato questa: npc_is_same_empire(). Ed ho svolto il codice così.
Codice:
when kill with npc.is_pc() begin
            if  npc_is_same_empire()  then
                pc.setqf("punti", pc.getqf("punti")+10)
                say_reward("Hai ottenuto: "...pc.getqf("punti")..."punti")
            else
                say_reward("Non puoi ricevere punti se uccidi un player di un'altro regno")
            end
        end

Questo è l'errore che mi da sulla macchina
V3kahj5.png

V3kahj5
 
L'errore per cui non compila sono "..." da sostituire con ".." (solo due punti e non tre)
Hai anche omesso uno spazio tra il numero di punti ottenuti e la parola "punti" , secondo me non viene molto carino se ci fai scrivere :
"Hai ottenuto 10punti" unito
Ti consiglio di usare un "chat()" invece del say_reward , la sintassi interna alle parentesi è la medesima..
Saluti ;)
 
  • Mi piace
Reazioni: gianfro95x
L'errore per cui non compila sono "..." da sostituire con ".." (solo due punti e non tre)
Hai anche omesso uno spazio tra il numero di punti ottenuti e la parola "punti" , secondo me non viene molto carino se ci fai scrivere :
"Hai ottenuto 10punti" unito
Ti consiglio di usare un "chat()" invece del say_reward , la sintassi interna alle parentesi è la medesima..
Saluti ;)
Ti ringrazio tantissimo per l'aiuto, adesso me la compila, però non mi compila il secondo state, non dà errori la macchina; cioè compila fino al primo state mentre il secondo non me lo fa vedere sulla macchina.

Codice:
quest punti begin
    state start begin  
        when kill with npc.is_pc() begin
            if  npc_is_same_empire()  then
                pc.setqf("punti", pc.getqf("punti")+10)
                chat("Hai ottenuto: "..pc.getqf("punti").." punti")
            else
                chat("Non puoi ricevere punti se uccidi un player di un'altro regno")
            end
        end
      
        when login or levelup with pc.get_level() >= 1 begin
            set_state("parte1")
        end
    end
  
    state parte1 begin
        when letter begin
            send_letter("Prova Lettera")
        end
      
        when button or info begin
            say_title("Prova Lettera")
            say("Salve"..pc.get_name().." voglio informarti che sei arrivato")
            say("BlaBlaBla")
            say("BlaBlaBla")
            say("Sei pronto per questa avventura??")
            local scelta = select("Si",No")
            if scelta == 1 then
                say_title("Prova Lettera")
                say("Perfetto, iniziamo prode guerriero!!!")
                set_state("parte2")
                clear_letter()
            else
                return
            end
        end
    end
  
    state parte2 begin
        when letter begin  
            send_letter("Contatore Punti")
        end

        when button or info begin
            say_title("Contatore Punti")
            say("Salve"..pc.get_name().." qui potrai vedere quanti punti hai totalizzato")
            say("")
            say("")
            say("Hai totalizzato:"..pc.getqf("punti").." Punti")
        end
    end
end

xKvXRJk.png
 
Codice:
quest punti begin
    state start begin 
        when kill with npc.is_pc() begin
            if  npc_is_same_empire()  then
                pc.setqf("punti", pc.getqf("punti")+10)
                chat("Hai ottenuto: "..pc.getqf("punti").." punti")
            else
                chat("Non puoi ricevere punti se uccidi un player di un'altro regno")
            end
        end
     
        when login or levelup with pc.get_level() >= 1 begin
            set_state("parte1")
        end
    end
 
    state parte1 begin
        when letter begin
            send_letter("Prova Lettera")
        end
     
        when button or info begin
            say_title("Prova Lettera")
            say("Salve"..pc.get_name().." voglio informarti che sei arrivato")
            say("BlaBlaBla")
            say("BlaBlaBla")
            say("Sei pronto per questa avventura??")
            local scelta = select("Si","No")
            if scelta == 1 then
                say_title("Prova Lettera")
                say("Perfetto, iniziamo prode guerriero!!!")
                set_state("parte2")
                clear_letter()
            else
                return
            end
        end
    end
 
    state parte2 begin
        when letter begin 
            send_letter("Contatore Punti")
        end

        when button or info begin
            say_title("Contatore Punti")
            say("Salve"..pc.get_name().." qui potrai vedere quanti punti hai totalizzato")
            say("")
            say("")
            say("Hai totalizzato:"..pc.getqf("punti").." Punti")
        end
    end
end
 
Codice:
quest punti begin
    state start begin
        when kill with npc.is_pc() begin
            if  npc_is_same_empire()  then
                pc.setqf("punti", pc.getqf("punti")+10)
                chat("Hai ottenuto: "..pc.getqf("punti").." punti")
            else
                chat("Non puoi ricevere punti se uccidi un player di un'altro regno")
            end
        end
    
        when login or levelup with pc.get_level() >= 1 begin
            set_state("parte1")
        end
    end
 
    state parte1 begin
        when letter begin
            send_letter("Prova Lettera")
        end
    
        when button or info begin
            say_title("Prova Lettera")
            say("Salve"..pc.get_name().." voglio informarti che sei arrivato")
            say("BlaBlaBla")
            say("BlaBlaBla")
            say("Sei pronto per questa avventura??")
            local scelta = select("Si","No")
            if scelta == 1 then
                say_title("Prova Lettera")
                say("Perfetto, iniziamo prode guerriero!!!")
                set_state("parte2")
                clear_letter()
            else
                return
            end
        end
    end
 
    state parte2 begin
        when letter begin
            send_letter("Contatore Punti")
        end

        when button or info begin
            say_title("Contatore Punti")
            say("Salve"..pc.get_name().." qui potrai vedere quanti punti hai totalizzato")
            say("")
            say("")
            say("Hai totalizzato:"..pc.getqf("punti").." Punti")
        end
    end
end

Ti ringrazio per aver risposto. Ma non riesco a trovare l'errore..
 
Scusa ma perchè mettere il when kill nello state start , se lo state start dura solo fino al primo login (cioè non dura)
Mi sono permesso di mettere ordine , non dovrebbe far differenza a livello di compilazione ma magari prova a compilare questo:
Codice:
quest punti begin
    state start begin
        when login or levelup with pc.get_level() >= 1 begin
            set_state("parte1")
        end
       
    end
    state parte1 begin
   
        when letter begin
            send_letter("Prova Lettera")
        end
    
        when button or info begin
            say_title("Prova Lettera")
            say("Salve "..pc.get_name().." voglio informarti che sei arrivato")
            say("BlaBlaBla")
            say("BlaBlaBla")
            say("Sei pronto per questa avventura??")
            local scelta = select("Si","No")
            if scelta == 1 then
                say_title("Prova Lettera")
                say("Perfetto, iniziamo prode guerriero!!!")
                set_state("parte2")
                clear_letter()
            end
        end
    end
    state parte2 begin
        when letter begin
            send_letter("Contatore Punti")
        end

        when button or info begin
            say_title("Contatore Punti")
            say("Salve"..pc.get_name().." qui potrai vedere quanti punti hai totalizzato")
            say("")
            say("")
            say("Hai totalizzato:"..pc.getqf("punti").." Punti")
        end
       
        when kill with npc.is_pc() begin
            if  npc_is_same_empire()  then
                pc.setqf("punti", pc.getqf("punti")+10)
                chat("Hai ottenuto: "..pc.getqf("punti").." punti")
            else
                chat("Non puoi ricevere punti se uccidi un player di un'altro regno")
            end
        end
       
    end
end
 
  • Mi piace
Reazioni: gianfro95x
Scusa ma perchè mettere il when kill nello state start , se lo state start dura solo fino al primo login (cioè non dura)
Mi sono permesso di mettere ordine , non dovrebbe far differenza a livello di compilazione ma magari prova a compilare questo:
Codice:
quest punti begin
    state start begin
        when login or levelup with pc.get_level() >= 1 begin
            set_state("parte1")
        end
      
    end
    state parte1 begin
  
        when letter begin
            send_letter("Prova Lettera")
        end
   
        when button or info begin
            say_title("Prova Lettera")
            say("Salve "..pc.get_name().." voglio informarti che sei arrivato")
            say("BlaBlaBla")
            say("BlaBlaBla")
            say("Sei pronto per questa avventura??")
            local scelta = select("Si","No")
            if scelta == 1 then
                say_title("Prova Lettera")
                say("Perfetto, iniziamo prode guerriero!!!")
                set_state("parte2")
                clear_letter()
            end
        end
    end
    state parte2 begin
        when letter begin
            send_letter("Contatore Punti")
        end

        when button or info begin
            say_title("Contatore Punti")
            say("Salve"..pc.get_name().." qui potrai vedere quanti punti hai totalizzato")
            say("")
            say("")
            say("Hai totalizzato:"..pc.getqf("punti").." Punti")
        end
      
        when kill with npc.is_pc() begin
            if  npc_is_same_empire()  then
                pc.setqf("punti", pc.getqf("punti")+10)
                chat("Hai ottenuto: "..pc.getqf("punti").." punti")
            else
                chat("Non puoi ricevere punti se uccidi un player di un'altro regno")
            end
        end
      
    end
end

Grande!! Grazie mille ora me la runna e mi fa tutti gli state!!! Sapresti dirmi l'errore? Così non vi rompo più sugli state.
 
Bhe io ho solo spostato il when kill nello state corretto , non è un errore che può portare alla non compilazione , ma solo al malfunzionamento ( in quanto le kill non sarebbero state considerate) , se ora lo compila forse hai sbagliato il copy paste la prima volta e non la seconda..
 
Stato
Discussione chiusa ad ulteriori risposte.