What's new

Talkactions [8.4+] Komenda na zmian? imienia gracza

Status
Not open for further replies.

Gandhi

Active User
Joined
Aug 7, 2013
Messages
80
Reaction score
19
1. Autor - Gandhi

3. Oryginalny temat - [url="http://otibia.pl/actions-moveevents-talkactions-48/komenda-na-zmiane-imienia-gracza-597/]Link[/url]
http://otibia.pl/actions-moveevents-talkactions-48/komenda-na-zmiane-imienia-gracza-597/

3. Opis - Komenda dla gamemastera, kt?rej u?ycie zmienia nick gracza. Gdy gracz jest online, wtedy jest on wylogowany. Posiada mo?liwo?? ustawienia odst?pu czasu mi?dzy u?yciem funkcji a zmienieniem nazwy graczowi, oraz zabieranie dni pacca danemu graczowi (ale niestety ja mam dziwnego buga i brak czasu na zabaw?, zamiast odejmowa? skrypt dodaje dni pacca, podczas gdy identyczne zapytanie bezpo?rednio w phpmyadmin dzia?a poprawnie).


4. Klient - TFS 0.3.6

5. Skrypt
data/talkactions/scripts/namelock.lua
[lua]local config = {
newNameMinLength = 3, -- minimalna dlugosc imienia
premiumDaysCost = 3, -- ile dni pacca odejmuje graczowi, ktoremu zmienia sie imie
timeoutToChangeName = 5000
}

local function changeName(newName, oldName, aid, cid, pid)
if(pid and isPlayer(pid)) then
if(config.premiumDaysCost > 0) then
doPlayerAddPremiumDays(pid, config.premiumDaysCost)
end
doRemoveCreature(pid)
elseif(config.premiumDaysCost > 0) then
db.executeQuery('UPDATE `accounts` SET `premdays` = (CASE WHEN `premdays` - '..config.premiumDaysCost..' < 0 THEN 0 ELSE `premdays` - '..config.premiumDaysCost..' END) WHERE `id` = '..aid..';')
end
db.executeQuery('UPDATE `players` SET `name` = '..db.escapeString(newName) .. ' WHERE `name` = '..db.escapeString(oldName))
if(isPlayer(cid)) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, oldName .. "'s name has been changed to " .. newName .. ".")
end
end

function onSay(cid, words, param, channel)
local params = string.explode(param, ',')
if(#params ~= 2 or params[2]:len() < config.newNameMinLength) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'You need to specify two parameters separated by "," - actual nick and new, with at least '..config.newNameMinLength..' letters.')
return true
end
local exists = db.getResult('SELECT `account_id`, `name`, `online` FROM `players` WHERE `name` = '..db.escapeString(params[1])..'')
if(exists:getID() == -1) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Player with name "'..params[1]..'" not found.')
return true
end
local pid = nil
if(exists:getDataInt('online') == 1) then
pid = getPlayerByName(params[1])
if(pid) then
doPlayerSendTextMessage(pid, MESSAGE_STATUS_WARNING, ' NAMELOCK!\n Your nick name is now changing. After you will be logged out - please login into your ACCOUNT (not character) again.')
end
end
if(config.timeoutToChangeName > 0) then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Changing '..params[1] .. "'s name in process...")
addEvent(changeName, config.timeoutToChangeName, params[2], params[1], exists:getDataInt('account_id'), cid, pid)
else
changeName(params[2], params[1], exists:getDataInt('account_id'), cid, pid)
end
return true
end
[/lua]
data/talkactions/talkactions.xml
[xml] <talkaction words="/namelock" access="5" event="script" value="namelock.lua"/>[/xml]
 
Status
Not open for further replies.
Top