Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2016-01-29, 05:28


ToJaMixxer

Mapper MTA, .lua






Wiek: 26
Na forum: 4520 dni
Posty: 44
Nick w MP: Mixxer

Piwa: 62

Respekt: 61

Witam serdecznie, od jakiego? czasu m?cz? si? z napisaniem skryptu kt?ry zajmowa?by si? usuwaniem przedrostka [AB] automatycznie zmieniaj?c go na [12]
Jestem zielony w tych sprawach wi?c prosz? o wyrozumia?o?? ;)

Pozdrawiam serdecznie i prosz? o pomoc :)
Kod:

name = "[AB]"
nowy = "[12]"..getPlayerName""
function przedrostek()
for k, v in ipairs (getElementsByType("player")) do
local name = getPlayerName(v)
if (string.find(name,"[ab]")) then
local name = string.gsub(nowy:sub(1,4), string.gsub(nowy:sub(1,9),"","[12]"..getPlayerName""))
setPlayerName(v,nowy)

end
end
end
addEventHandler("onResourceStart",getResourceRootElement(getThisResource()),przedrostek)


Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-01-29, 08:39


BlackTen

LUA Dev.






Wiek: 28
Na forum: 4329 dni
Posty: 698

Piwa: 2080

Respekt: 157
Respekt: 157Respekt: 157

W drugiej linijce po getPlayerName dodaj dwie kropki

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-01-29, 09:32


ToJaMixxer

Mapper MTA, .lua






Wiek: 26
Na forum: 4520 dni
Posty: 44
Nick w MP: Mixxer

Piwa: 62

Respekt: 61

Kod:

name = "[AB]"
nowy = "[12]"..getPlayerName..""
function przedrostek()
for k, v in ipairs (getElementsByType("player")) do
local name = getPlayerName(v)
if (string.find(name,"[ab]")) then
local name = string.gsub(nowy:sub(1,4), string.gsub(nowy:sub(1,9),"","[12]"..getPlayerName..""))
setPlayerName(v,nowy)

end
end
end
addEventHandler("onResourceStart",getResourceRootElement(getThisResource()),przedrostek)


Wci?? nie dzia?a, debug wyrzuca:
Kod:

ERROR: przedrostek/serwer.lua:2: attempt to concatente global "getPlayerName" (a function value)


Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-01-29, 11:00


Kronix.Cooder







Wiek: 36
Na forum: 4899 dni
Posty: 26

Piwa: 15

Respekt: 90


function przedrostek() 
    for _v in ipairs(getElementsByType("player")) do 
        setPlayerName(vstring.gsub(getPlayerName(v), "(%[AB%])""[12]")) -- [AB]  zamieni na   [12]
    end 
end 

addEventHandler("onResourceStart",getResourceRootElement(getThisResource()),przedrostek)


wypada?o by doda? to:
addEventHandler("onPlayerJoin",root,function() 
    setPlayerName(sourcestring.gsub(getPlayerName(source), "(%[AB%])""[12]")) 
end)


Wtedy nie tylko zmieni nazwe graczom podczas ?adowania resource ale r?wnie? podczas "wchodzenia", na serwer

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-01-29, 14:37


ToJaMixxer

Mapper MTA, .lua






Wiek: 26
Na forum: 4520 dni
Posty: 44
Nick w MP: Mixxer

Piwa: 62

Respekt: 61

Wci?? ten sam output z debuga
Kod:

name = "[AB]"
nowy = "[12]"..getPlayerName..""

function przedrostek()
for _, v in ipairs(getElementsByType("player")) do
setPlayerName(v, string.gsub(getPlayerName(v), "(%[AB%])", "[12]")) -- [AB] zamieni na [12]
end
end

addEventHandler("onResourceStart",getResourceRootElement(getThisResource()),przedrostek)

addEventHandler("onPlayerJoin",root,function()
setPlayerName(source, string.gsub(getPlayerName(source), "(%[AB%])", "[12]"))
end)


Podpis
Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-01-29, 15:09


Kronix.Cooder







Wiek: 36
Na forum: 4899 dni
Posty: 26

Piwa: 15

Respekt: 90

Da?em ci gotowca aby? przeanalizowa? a ty dok?adasz jeszcze linijki kt?rych wida? nie rozumiesz.

Kod:


name = "[AB]"
nowy = "[12]"..getPlayerName..""

wywal bo to nie potrzebne


a b??d jest poniewa? getPlayerName oczekuje argument?w kt?rych u ciebie brak
dodatkowo nie mo?na u?ywa? getPlayerName w globalnej sekcji, z reszt? nie ma to sensu bo jaki i sk?d parametr mu przydzieli??

ale nawet nie o to chodzi, bo przypisujesz te 2 linie do zmiennych name i nowy kt?rych nast?pnie nigdzie nie wykorzystujesz? wi?c po co one?

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-01-29, 15:18


ToJaMixxer

Mapper MTA, .lua






Wiek: 26
Na forum: 4520 dni
Posty: 44
Nick w MP: Mixxer

Piwa: 62

Respekt: 61

Wybacz, jestem po dw?ch nockach pracy nad serwerem i m?j m?zg zaczyna odmawia? pos?usze?stwa. Nieprzeanalizowa?em kodu i do tego sam nie wiem w jaki spos?b ?le zinterpretowa?em tw?j post, zm?czony jestem i tyle. Skrypt dzia?a jak nale?y. Dzi?kuj? za pomoc ;)

@EDIT

Mam jeszcze pytanie, jak doda? event kt?ry wywo?a zmian? nicku z [AB] na [12] przy zmianie nicku?

Gdy dodaj?:
addEventHandler("onPlayerChangeNick",root,function() 
setPlayerName(sourcestring.gsub(getPlayerName(source), "(%[AB%])""[12]")) 
end)


skrypt zaczyna ?wirowa? i spami mi czat zmian? nicku nawet z [12]nick na [12]nick

Postaw piwo autorowi tego posta
 

 
Wysłany: 2016-01-29, 20:12


Kronix.Cooder







Wiek: 36
Na forum: 4899 dni
Posty: 26

Piwa: 15

Respekt: 90

setPlayerName wywo?uje event zmiany nazwy gracza jeszcze przed jego zmian?,
powstaje klasyczne zap?tlenie w niesko?czono?? i st?d ten spam.

proponuje przerwa? event gdy nick posiada niedozwolone znaki

addEventHandler("onPlayerChangeNick",root,function(old,new)
    if string.find(new,"(%[AB%])"then
        cancelEvent()
    end
end)


Postaw piwo autorowi tego posta
 

 
Tagi: [lua]usuwanie :: przedrostku
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA Ten temat jest zablokowany bez możliwości zmiany postów lub pisania odpowiedzi

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku