[LUA]Problème avec un script très important
(28-04-2010 18:17)Zeytan a écrit :  Non les local sont des variables qui sont lu au moment où une fonction le demande.

D'accord, tu es sûr qu'elles ne sont pas initialisées au début ? Parce que ce serait logique qu'il y ait une erreur avec "pPlayer" vu que le pointeur n'est pas déclarer avant la fonction.

EDIT: D'ailleurs, l'erreur que tu as résolu à 19:07, je l'avait déjà résolue dans le post d'avant Langue
J'avais pas regardé Smile ! Ouai peut être mais bon pourtant j'ai déjà fait des t'as de script avec les local en entête, parce que ce sont des variables... Ca peut en effet causer le problème...
C'est quoi cette manie de déclarer les variables en dehors de la fonction ? Pour moi déclarer on déclare une variable hors de touta fonction uniquement pour les variables globales, mais là on a une seul fonction donc autant les déclarer dans la fonction.

EDIT : Quel est l'intérêt des posx2, posy2 et compagnie. Pourquoi ce ne serait pas les même variable pos que quand on spawn un entraineur de l'alliance ?

Bon voici le code que je propose :
[code=lua]--Commande #spell.lua Codé par Neø pour Felena-Online

local SPELL_MSG = "#spell"

function PlayerOnChat(event, pPlayer, message, type, language)
local LCM = message:lower()
local entry = { 16771, 4594, 5491, 16681, 8308, 3039, 4215, 4582, 4090, 16658, 28474, 28474, 17520, 3032, 17514, 4568, 5171, 16646, 0, 0, 4217, 16655 }
if(LCM == SPELL_MSG) then
pPlayer:SpawnCreature(entry[pPlayer:GetPlayerClass() + pPlayer:GetTeam()], pPlayer:GetX() + 1, pPlayer:GetY() + 1, pPlayer:GetZ(), pPlayer:GetO()*3.14, 0, 120000)
end
end

RegisterServerHook(16, "PlayerOnChat")[/code]

C'est tout de suite plus court hein Langue. Bon il faut tester je ne sais pas si ça fonctionne, a par utilisé un tableau et donc réduire considérablement la taille du code j'ai apporté deux améliorations :
- *3.14 après pPlayer:GetO() pour que le PNJ fasse face au joueur et ne soit pas de dos.
- Le PNJ se despawn après 2 minutes contre 120 millisecondes auparavant.
Bon j'ai un truc du style
Code :
--Commande #spell.lua Codé par Neø pour Felena-Online





function PlayerOnChat(event, pPlayer, message, type, language)          
                local LCM = message:lower()
                if(LCM == SPELL_MSG) then
                local SPELL_MSG = "#spell"
    local class = pPlayer:GetPlayerClass()
    local race = pPlayer:GetPlayerRace()
    local posx = pPlayer:GetX() + 1
    local posy = pPlayer:GetY() + 1
    local posz = pPlayer:GetZ()
    local poso = pPlayer:GetO()
    local posx2 = pPlayer:GetX() + 1
    local posy2 = pPlayer:GetY() + 1
    local posz2 = pPlayer:GetZ() + 1
    local poso2 = pPlayer:GetO()
                                        if(race == 1) or (race == 3) or (race == 4) or (race == 7) or (race == 11) then --Perso ally
                                                if(class == 1) then     --Guerrier
                                                        pPlayer:SpawnCreature(16771, posx, posy, posz, poso, 0, 120)
                                                end
                                                if(class == 2) then     --Paladin
                                                        pPlayer:SpawnCreature(5491, posx, posy, posz, poso, 0, 120)
                                                end
                                                if(class == 3) then     --Chasseur
                                                        pPlayer:SpawnCreature(8308, posx, posy, posz, poso, 0, 120)
                                                end
                                                if(class == 4) then     --Voleur
                                                        pPlayer:SpawnCreature(4215, posx, posy, posz, poso, 0, 120)
                                                end
                                                if(class == 5) then --Prêtre
                                                        pPlayer:SpawnCreature(4090, posx, posy, posz, poso, 0, 120)
                                                end
                                                if(class == 6) then --DK
                                                        pPlayer:SpawnCreature(28474, posx, posy, posz, poso, 0, 120)
                                                end
                                                if(class == 7) then --Chaman
                                                        pPlayer:SpawnCreature(17520, posx, posy, posz, poso, 0, 120)
                                                end
                                                if(class == 8) then --Mage
                                                        pPlayer:SpawnCreature(17514, posx, posy, posz, poso, 0, 120)
                                                end
                                                if(class == 9) then --Démo
                                                        pPlayer:SpawnCreature(5171, posx, posy, posz, poso, 0, 120)
                                                end
                                                if(class == 11)then --Druide
                                                        pPlayer:SpawnCreature(4217, posx, posy, posz, poso, 0, 120)
                                                end
                                elseif(race == 2) or (race == 5) or (race == 6) or (race == 8) or (race == 10) then -- Perso H²
                                                if(class == 1) then     --Guerrier
                                                        pPlayer:SpawnCreature(4594, posx2, posy2, posz2, poso2, 0, 120)
                                                end
                                                if(class == 2) then     --Paladin
                                                        pPlayer:SpawnCreature(16681, posx2, posy2, posz2, poso2, 0, 120)
                                                end
                                                if(class == 3) then     --Chasseur
                                                        pPlayer:SpawnCreature(3039, posx2, posy2, posz2, poso2, 0, 120)
                                                end
                                                if(class == 4) then     --Voleur
                                                        pPlayer:SpawnCreature(4582, posx2, posy2, posz2, poso2, 0, 120)
                                                end
                                                if(class == 5) then     --Prêtre
                                                        pPlayer:SpawnCreature(16658, posx2, posy2, posz2, poso2, 0, 120)
                                                end
                                                if(class == 6) then     --DK
                                                        pPlayer:SpawnCreature(28474, posx2, posy2, posz2, poso2, 0, 120)
                                                end
                                                if(class == 7) then     --Chaman
                                                        pPlayer:SpawnCreature(3032, posx2, posy2, posz2, poso2, 0, 120)
                                                end
                                                if(class == 8) then --Mage
                                                        pPlayer:SpawnCreature(4568, posx2, posy2, posz2, poso2, 0, 120)
                                                end
                                                if(class == 9) then     --Démo
                                                        pPlayer:SpawnCreature(16646, posx2, posy2, posz2, poso2, 0, 120)
                                                end
                                                if(class == 11)then     --Druide
                                                        pPlayer:SpawnCreature(16655, posx2, posy2, posz2, poso2, 0, 120)
                                                end
                        end

        end
end


RegisterServerHook(16, "PlayerOnChat")
Ça marche pas (y s'passe rien). J'ai mal repris vos réponses et je peux me considérer comme dyslexique ou bien autre chose ?
Il fonctionne pas mon code ? Triste
Non enfin du moins SgT me visait moi, car cest moi qui avait poser les variables en entete. Pas de quoi de croire dyslexique. Jaime bien comment tu as fais tout ca Sadikum, cest sure que cest plus econome.
Oui j'aime pas quand le code et long et moche. Surtout que c'était beaucoup de if pour au final toujours faire la même fonction avec l'entry différente Pinch. Et je vous conseille de regarder le fichier UnitFunctions.h du LUAScripting, on y trouve toutes les fonctions concernant les creature/player Clin.
Pourtant ce script pourrait être copié du #revivre, or ça ne marche pas comme ça devrait :/
Sans être méchant il faudra rectifié sa :

Citation :--Commande #spell.lua Codé par Neø pour Felena-Online
Langue
Riful tu pourrais me dire si le code suivant fonctionne :
[code=lua]local SPELL_MSG = "#spell"

function PlayerOnChat(event, pPlayer, message, type, language)
local LCM = message:lower()
local entry = { 16771, 4594, 5491, 16681, 8308, 3039, 4215, 4582, 4090, 16658, 28474, 28474, 17520, 3032, 17514, 4568, 5171, 16646, 0, 0, 4217, 16655 }
if(LCM == SPELL_MSG) then
pPlayer:SpawnCreature(entry[pPlayer:GetPlayerClass() + pPlayer:GetTeam()], pPlayer:GetX() + 1, pPlayer:GetY() + 1, pPlayer:GetZ(), pPlayer:GetO()*3.14, 0, 120000)
end
end

RegisterServerHook(16, "PlayerOnChat")[/code]

Ou dans le cas contraire me dire si le problème reste le même ou s'il y a une erreur en console.

Retourner en haut Accueil