Jump to content

Скрипт покупки [нужно немного помощи]


Recommended Posts

Возникла идея сделать скрипт на покупку скина (РПГ сервер).

За основу я взял скрипт с комьюнити. Скрипт изначально работал только для выбора скина.

Я решил добавить следующее:

1. При нажатии на кнопку "купить" у игрока отнимается 200 долларов и применяется скин

2. При нажатии на кнопку "выход" у него возвращается предыдущий скин.

Вот код:

Клиент:

  
markerskin = createMarker( 1520.4227294922,-1618.5716552734,12.546875,"cylinder",1,100,0,150,200 ) 
  
function CreateSelectorWindow() 
wdwselector = guiCreateWindow(0.438,0.820,0.15,0.13,"Покупка скина",true) 
guiWindowSetMovable(wdwselector,false) 
btnLeft = guiCreateButton(0.0,0.23,0.200,0.300,"<-",true,wdwselector) 
btnRight = guiCreateButton(0.76,0.23,0.200,0.300,"->",true,wdwselector) 
btnSelect = guiCreateButton(0.30,0.23,0.400,0.300,"Купить",true,wdwselector) 
btnClose = guiCreateButton(0.30,0.60,0.400,0.300,"Выход",true,wdwselector) 
guiSetVisible(wdwselector, false) 
end 
  
function selectorenable () 
CreateSelectorWindow() 
 addEventHandler("onClientGUIClick", btnLeft, clientSkinLeft, false) 
 addEventHandler("onClientGUIClick", btnSelect, clientSkinSelect, false) 
 addEventHandler("onClientGUIClick", btnRight, clientSkinRight, false) 
 addEventHandler("onClientGUIClick", btnClose, clientSkinClose, false) 
            if (wdwselector ~= nil) then 
                 guiSetVisible(wdwselector, true) 
                 triggerServerEvent("FrontCamera", getRootElement()) 
            end  
            showCursor(true) 
    end 
addCommandHandler("skin", selectorenable, false, false) 
  
function clientSkinSelect(button) 
    if button == "left" then 
        guiSetVisible(wdwselector, false) 
        showCursor(false) 
        triggerServerEvent("SkinSelected", getRootElement()) 
    end 
end 
  
function clientSkinClose(button) 
    if button == "left" then 
        guiSetVisible(wdwselector, false) 
        showCursor(false) 
        triggerServerEvent("SkinNotSelected", getRootElement()) 
    end 
end 
  
function clientSkinRight(button) 
    if button == "left" then 
    triggerServerEvent("SkinRight", getRootElement()) 
    end 
end 
  
function clientSkinLeft(button) 
    if button == "left" then 
    triggerServerEvent("SkinLeft", getRootElement()) 
    end 
end 
  

Сервер:

  
function camf() 
if (client) then 
local px,py,pz = getElementPosition( client ) 
local rot = setPedRotation(client, 1) 
setCameraMatrix( source, px, py+4, pz, px, py, pz) 
end 
end 
addEvent("FrontCamera", true) 
addEventHandler("FrontCamera", getRootElement(), camf) 
  
  
----------------------------------------- 
function selected() 
local money = getPlayerMoney(thePlayer) 
  
if (client) then 
    fadeCamera(client, true) 
    setCameraTarget(client, client) 
    outputChatBox("Вы успешно купили скин!", client) 
    elseif (money < 500) then 
    outputChatBox("You don't have money!",thePlayer,255,0,0,true) 
    else 
    takePlayerMoney(thePlayer,500) 
end 
  
end 
addEvent("SkinSelected", true) 
addEventHandler("SkinSelected", getRootElement(), selected) 
------------------------------------------------- 
  
  
function notselected() 
if (client) then 
fadeCamera(client, true) 
setCameraTarget(client, client) 
end 
end 
addEvent("SkinNotSelected", true) 
addEventHandler("SkinNotSelected", getRootElement(), notselected) 
  
  
function skinright() 
local skin = getPedSkin(client) 
if (client) then 
if (skin == 0) then 
setPedSkin(client, 7) 
elseif (skin == 7) then 
setPedSkin(client, 9) 
elseif (skin == 41) then 
setPedSkin(client, 43) 
elseif (skin == 64) then 
setPedSkin(client, 66) 
elseif (skin == 85) then 
setPedSkin(client, 87) 
elseif(skin == 118) then 
setPedSkin(client, 120) 
elseif(skin == 148) then 
setPedSkin(client, 150) 
elseif(skin == 207) then 
setPedSkin(client, 209) 
elseif(skin == 238) then 
setPedSkin(client, 240) 
elseif(skin == 264) then 
setPedSkin(client, 274) 
elseif(skin == 288) then 
setPedSkin(client, 0) 
else 
setPedSkin(client, skin+1) 
end 
end 
end 
addEvent("SkinRight", true) 
addEventHandler("SkinRight", getRootElement(), skinright) 
  
function skinleft() 
local skin = getPedSkin(client) 
if (client) then 
if (skin == 7) then 
setPedSkin(client, 0) 
elseif (skin == 9) then 
setPedSkin(client, 7) 
elseif (skin == 43) then 
setPedSkin(client, 41) 
elseif (skin == 66) then 
setPedSkin(client, 64) 
elseif (skin == 87) then 
setPedSkin(client, 85) 
elseif(skin == 120) then 
setPedSkin(client, 118) 
elseif(skin == 150) then 
setPedSkin(client, 148) 
elseif(skin == 209) then 
setPedSkin(client, 207) 
elseif(skin == 240) then 
setPedSkin(client, 238) 
elseif(skin == 274) then 
setPedSkin(client, 264) 
elseif(skin == 0) then 
setPedSkin(client, 288) 
else 
setPedSkin(client, skin-1) 
end 
end 
end 
addEvent("SkinLeft", true) 
addEventHandler("SkinLeft", getRootElement(), skinleft) 
  

Функция покупки снятия денег на стороне сервера (отделил --------------- что бы было видно сразу ).

Вопрос: почему не работает? где допущено ошибку? Подскажите пожалуйста

Дополнение: подскажите пожалуйста, если не сложно как делать так, что бы при нажатии на кнопку "выход" игроку возвращался предыдущий скин, и он выходил из режима покупки?

Link to comment
function selected() 
    local money = getPlayerMoney(thePlayer) -- Получаем деньги некого объекта thePlayer (которого по видемому не существует). 
    -- по идее в money сейчас false. 
    if (client) then -- client это объект который вызвал событие (игрок), т.е. проверка проходит. 
        fadeCamera(client, true) 
        setCameraTarget(client, client) 
        outputChatBox("Вы успешно купили скин!", client) 
    elseif (money < 500) then -- До сюда даже не дойдёт. 
        outputChatBox("You don't have money!",thePlayer,255,0,0,true) 
    else -- аналогично. 
        takePlayerMoney(thePlayer,500) 
    end 
end 

Исправил код, надеюсь не просто скопируешь его, а ещё и попытаешься понять, дабы не совершать в будущем логических ошибок.

function selected() 
    if client then 
        if ( getPlayerMoney( client ) or 0 ) < 500 then 
            outputChatBox( "У Вас недостаточно денег!", client , 255, 0, 0, true ) 
        else 
            fadeCamera( client, true ) 
            setCameraTarget( client, client ) 
            outputChatBox( "Вы успешно купили скин!", client ) 
             
            takePlayerMoney( client, 500 ) 
        end 
    end 
end 

Link to comment

Kernell,

if ( getPlayerMoney( client ) or 0 ) < 500 then 

Зачем делать эту проверку ( getPlayerMoney( client ) or 0 ) если getPlayerMoney вернёт 0 в любом случае или false если элемента игрока нету.

if getPlayerMoney( client ) < 500 then 

м?

Link to comment

Исправил код, надеюсь не просто скопируешь его, а ещё и попытаешься понять, дабы не совершать в будущем логических ошибок.

Свою ошибку понял :) Спасибо!

Link to comment
подскажите пожалуйста, если не сложно как делать так, что бы при нажатии на кнопку "выход" игроку возвращался предыдущий скин, и он выходил из режима покупки?
Link to comment
Kernell,
if ( getPlayerMoney( client ) or 0 ) < 500 then 

Зачем делать эту проверку ( getPlayerMoney( client ) or 0 ) если getPlayerMoney вернёт 0 в любом случае или false если элемента игрока нету.

if getPlayerMoney( client ) < 500 then 

м?

Твой вариант мягко говоря "говнокод".

Чем он лучше? Много сэкономил ресурсов что ли? Глупость.

> getPlayerMoney вернёт 0 в любом случае или false если элемента игрока нету

И откуда такая уверенность? Нельзя быть на 100% уверенным в таких вещах, проверять нужно всё, а это просто предосторожность.

P.S. Выше проверки на валидность игрока нету, может быть есть глобальная переменная client с типом таблицы, а функцию вызвало серверное событие или вообще не событие. Не понимаю смысла вообще было придираться к этой строке. Понт?

Link to comment
Оценено :D

По моему вопросу (пост выше) поможете? Очень вас прошу!

Ну как бы нужно при входе на маркер получить скин игрока и записать куда-то (пускай это будет например ElementData).

При нажатии на "Выход" так же через событие устанавливаем скин игроку из ElementData.

Я просто в коде не нахожу этих событий.

Link to comment
Оценено :D

По моему вопросу (пост выше) поможете? Очень вас прошу!

Ну как бы нужно при входе на маркер получить скин игрока и записать куда-то (пускай это будет например ElementData).

При нажатии на "Выход" так же через событие устанавливаем скин игроку и ElementData.

Я просто в коде не нахожу этих событий.

Их там и нет :) Я просто спросил как можно реализовать такое) Спасибо большое за совет :)

Link to comment

Вот хотел добавить в функцию следующее:

При недостатке денег в чат отправляется уведомление об этом, возвращается скинь который был ДО захода в магазин (изначальный) и закрывается сам магазин.

function selected() 
    if client then 
    getPedSkin ( source ) 
        if ( getPlayerMoney( client ) or 0 ) < 500 then 
            setPedSkin ( source ) 
            fadeCamera( client, true ) 
            setCameraTarget( client, client ) 
            outputChatBox( "У Вас недостаточно денег!", client , 255, 0, 0, true ) 
        else 
            fadeCamera( client, true ) 
            setCameraTarget( client, client ) 
            outputChatBox( "Вы успешно купили скин!", client ) 
            
            takePlayerMoney( client, 500 ) 
        end 
    end 
end 
addEvent("SkinSelected", true) 
addEventHandler("SkinSelected", getRootElement(), selected) 

Не работает :(

Link to comment

Не работает - и я с Lua согласен. Ибо ты записываешь результат функции в память. Ну и функция вернёт ID скина который уже на игроке.

Выше я писал как надо: перед выдачей меню, нужно записать в память ID текущего скина. При нажатии "Отмена" берём ID скина из памяти и ставим скин игроку.

P.S. source замените на client лучше, а то как-то не красиво.

EDIT:

Я бы советовал перенести бинд команды "skin" на сервер, и там уже вызывать клиентское событие привязанное к функции selectorenable.

А в обработчике команды "skin" делать то о чём я говорил выше.

Link to comment

Выше я писал как надо: перед выдачей меню, нужно записать в память ID текущего скина. При нажатии "Отмена" берём ID скина из памяти и ставим скин игроку.

С делал как вы посоветовали:

  
function playerLogin (thePreviousAccount, theCurrentAccount, autoLogin) 
  if  not (isGuestAccount (getPlayerAccount (source))) then 
   local playerskin = getElementModel ( source ) 
    end 
end 
  
function selected() 
    if client then 
        if ( getPlayerMoney( client ) or 0 ) < 500 then 
            setElementModel ( client, playerskin ) 
            fadeCamera( client, true ) 
            setCameraTarget( client, client ) 
            outputChatBox( "У Вас недостаточно денег!", client , 255, 0, 0, true ) 
        else 
            fadeCamera( client, true ) 
            setCameraTarget( client, client ) 
            outputChatBox( "Вы успешно купили скин!", client ) 
            
            takePlayerMoney( client, 500 ) 
        end 
    end 
end 

Теперь скин записывается в память при авторизации на сервере, после чего в функции покупки, при нехватке денег возвращается на игрока. Я правильно сделал? Во всяком случае debugscript ругается

[2012-02-10 16:52:42] WARNING: skinselect\s_skinselect.lua:22: Bad argument @ 'setElementModel' 

не пойму по чему

p.s. вычитал что лучше использовать getElementModel и SetElementModel

Link to comment

Ты объявил переменную playerskin как локальную, что значит её область видимости в пределах своего блока, извне её не существует. Даже объявив её как глобальную, код будет немного не правильным, ибо игрок на сервере будет не один, а переменная одна на всех. Поэтому чтобы тебе было проще, храни ID скина в ElementData.

  
function playerLogin (thePreviousAccount, theCurrentAccount, autoLogin) 
  if  not (isGuestAccount (getPlayerAccount (source))) then 
        setElementData( source, "default_skin", getElementModel( source ) ) 
    end 
end 
  
function selected() 
    if client then 
        local playerskin = getElementData( client, "default_skin" ) 
         
        if not playerskin then 
            -- Если нужно, добавь текст с ошибкой или можешь использовать assert для прерывания скрипта и вывода ошибки в дебаг 
            return; 
        end 
  
        if ( getPlayerMoney( client ) or 0 ) < 500 then 
            setElementModel ( client, playerskin ) 
            fadeCamera( client, true ) 
            setCameraTarget( client, client ) 
            outputChatBox( "У Вас недостаточно денег!", client , 255, 0, 0, true ) 
        else 
            fadeCamera( client, true ) 
            setCameraTarget( client, client ) 
            outputChatBox( "Вы успешно купили скин!", client ) 
            
            takePlayerMoney( client, 500 ) 
        end 
    end 
end 

Link to comment

Я поправил свой код твоими исправлениями, получилось вот что:

  
function playerLogin (thePreviousAccount, theCurrentAccount, autoLogin) 
  if  not (isGuestAccount (getPlayerAccount (source))) then 
        setElementData( source, "default_skin", getElementModel( source ) ) 
    end 
end 
  
function camf() 
if (client) then 
local px,py,pz = getElementPosition( client ) 
local rot = setPedRotation(client, 1) 
setCameraMatrix( source, px, py+4, pz, px, py, pz) 
end 
end 
addEvent("FrontCamera", true) 
addEventHandler("FrontCamera", getRootElement(), camf) 
  
  
  
function selected() 
    if client then 
        local playerskin = getElementData( client, "default_skin" ) 
        
        if not playerskin then 
            -- Если нужно, добавь текст с ошибкой или можешь использовать assert для прерывания скрипта и вывода ошибки в дебаг 
            return; 
        end 
  
        if ( getPlayerMoney( client ) or 0 ) < 500 then 
            setElementModel ( client, playerskin ) 
            fadeCamera( client, true ) 
            setCameraTarget( client, client ) 
            outputChatBox( "У Вас недостаточно денег!", client , 255, 0, 0, true ) 
        else 
            fadeCamera( client, true ) 
            setCameraTarget( client, client ) 
            outputChatBox( "Вы успешно купили скин!", client ) 
            
            takePlayerMoney( client, 500 ) 
        end 
    end 
end 
addEvent("SkinSelected", true) 
addEventHandler("SkinSelected", getRootElement(), selected) 
  
  
function notselected() 
if (client) then 
fadeCamera(client, true) 
setCameraTarget(client, client) 
end 
end 
addEvent("SkinNotSelected", true) 
addEventHandler("SkinNotSelected", getRootElement(), notselected) 
  
  
function skinright() 
local skin = getPedSkin(client) 
if (client) then 
if (skin == 0) then 
setPedSkin(client, 7) 
elseif (skin == 7) then 
setPedSkin(client, 9) 
elseif (skin == 41) then 
setPedSkin(client, 43) 
elseif (skin == 64) then 
setPedSkin(client, 66) 
elseif (skin == 85) then 
setPedSkin(client, 87) 
elseif(skin == 118) then 
setPedSkin(client, 120) 
elseif(skin == 148) then 
setPedSkin(client, 150) 
elseif(skin == 207) then 
setPedSkin(client, 209) 
elseif(skin == 238) then 
setPedSkin(client, 240) 
elseif(skin == 264) then 
setPedSkin(client, 274) 
elseif(skin == 288) then 
setPedSkin(client, 0) 
else 
setPedSkin(client, skin+1) 
end 
end 
end 
addEvent("SkinRight", true) 
addEventHandler("SkinRight", getRootElement(), skinright) 
  
function skinleft() 
local skin = getPedSkin(client) 
if (client) then 
if (skin == 7) then 
setPedSkin(client, 0) 
elseif (skin == 9) then 
setPedSkin(client, 7) 
elseif (skin == 43) then 
setPedSkin(client, 41) 
elseif (skin == 66) then 
setPedSkin(client, 64) 
elseif (skin == 87) then 
setPedSkin(client, 85) 
elseif(skin == 120) then 
setPedSkin(client, 118) 
elseif(skin == 150) then 
setPedSkin(client, 148) 
elseif(skin == 209) then 
setPedSkin(client, 207) 
elseif(skin == 240) then 
setPedSkin(client, 238) 
elseif(skin == 274) then 
setPedSkin(client, 264) 
elseif(skin == 0) then 
setPedSkin(client, 288) 
else 
setPedSkin(client, skin-1) 
end 
end 
end 
addEvent("SkinLeft", true) 
addEventHandler("SkinLeft", getRootElement(), skinleft) 

Но дело в том что картина не изменилась. Скин продолжает применяться, не смотря на нехватку денег, и не возвращается в исходный (тот который игрок получает при входу на сервер). Почему так?

Link to comment
  • 2 weeks later...
И дебаг молчит? Ибо такого быть не может. Либо ты что-то не то говоришь.

Дебаг не молчит:

[2012-02-25 01:59:07] WARNING: skinselect\s_skinselect.lua:23: Bad argument @ 'setElementModel' 
[2012-02-25 01:59:07] WARNING: skinselect\s_skinselect.lua:43: Bad argument @ 'setElementModel' 

весь код:

function camf() 
if (client) then 
local px,py,pz = getElementPosition( client ) 
local rot = setPedRotation(client, 1) 
setCameraMatrix( source, px, py+5, pz, px, py, pz) 
end 
end 
addEvent("FrontCamera", true) 
addEventHandler("FrontCamera", getRootElement(), camf) 
  
  
  
function playerLogin (thePreviousAccount, theCurrentAccount, autoLogin) 
  if  not (isGuestAccount (getPlayerAccount (source))) then 
        setElementData( source, "defaultsskin", getElementModel( source ) ) 
    end 
end 
addEventHandler("OnPlayerLogin", getRootElement(), playerLogin) 
  
  
function selected() 
    if client then 
        local playerskin = getElementData( client, "defaultsskin" ) 
        if ( getPlayerMoney( client ) or 0 ) < 100 then 
            setElementModel ( client, playerskin ) 
            fadeCamera( client, true ) 
            setCameraTarget( client, client ) 
            outputChatBox( "У Вас недостаточно денег!", client , 255, 0, 0, true ) 
        else 
            fadeCamera( client, true ) 
            setCameraTarget( client, client ) 
            outputChatBox( "Вы успешно купили скин!", client ) 
            
            takePlayerMoney( client, 100 ) 
        end 
    end 
end 
addEvent("SkinSelected", true) 
addEventHandler("SkinSelected", getRootElement(), selected) 
  
  
function notselected() 
       -- local playerskin = getElementData( client, "1skin" ) 
if (client) then 
           -- setElementModel ( client, playerskin ) 
fadeCamera(client, true) 
setCameraTarget(client, client) 
---outputChatBox("Skin successfully changed!", client) 
end 
end 
addEvent("SkinNotSelected", true) 
addEventHandler("SkinNotSelected", getRootElement(), notselected) 
  
  
function skinright() 
local skin = getPedSkin(client) 
if (client) then 
if (skin == 0) then 
setPedSkin(client, 7) 
elseif (skin == 7) then 
setPedSkin(client, 9) 
elseif (skin == 41) then 
setPedSkin(client, 43) 
elseif (skin == 64) then 
setPedSkin(client, 66) 
elseif (skin == 85) then 
setPedSkin(client, 87) 
elseif(skin == 118) then 
setPedSkin(client, 120) 
elseif(skin == 148) then 
setPedSkin(client, 150) 
elseif(skin == 207) then 
setPedSkin(client, 209) 
elseif(skin == 238) then 
setPedSkin(client, 240) 
elseif(skin == 264) then 
setPedSkin(client, 274) 
elseif(skin == 288) then 
setPedSkin(client, 0) 
else 
setPedSkin(client, skin+1) 
end 
end 
end 
addEvent("SkinRight", true) 
addEventHandler("SkinRight", getRootElement(), skinright) 
  
function skinleft() 
local skin = getPedSkin(client) 
if (client) then 
if (skin == 7) then 
setPedSkin(client, 0) 
elseif (skin == 9) then 
setPedSkin(client, 7) 
elseif (skin == 43) then 
setPedSkin(client, 41) 
elseif (skin == 66) then 
setPedSkin(client, 64) 
elseif (skin == 87) then 
setPedSkin(client, 85) 
elseif(skin == 120) then 
setPedSkin(client, 118) 
elseif(skin == 150) then 
setPedSkin(client, 148) 
elseif(skin == 209) then 
setPedSkin(client, 207) 
elseif(skin == 240) then 
setPedSkin(client, 238) 
elseif(skin == 274) then 
setPedSkin(client, 264) 
elseif(skin == 0) then 
setPedSkin(client, 288) 
else 
setPedSkin(client, skin-1) 
end 
end 
end 
addEvent("SkinLeft", true) 
addEventHandler("SkinLeft", getRootElement(), skinleft) 

Edited by Guest
Link to comment

Этот код должен быть на серверной или клиентской части?

-----

Update:

решил протестить и прописал в

setElementModel ( client, playerskin ) 

вместо playerskin id скин 280

и при недостатке денег скин сменился.

Получается что или

setElementData( source, "defaultsskin", getElementModel( source ) ) 

не записывает дату, или проблема тут:

local playerskin = getElementData( client, "defaultsskin" ) 

Как поправить это?

Link to comment

В след. раз когда выкладываете скрипт - подумайте о его рефакторинге, чтобы другие могли без труда разобраться в вашем коде.

local FrontCamera, PlayerLogin, SkinSelected, SkinNotSelected, SkinRight, SkinLeft; 
  
addEvent( "FrontCamera", true ); 
addEvent( "SkinSelected", true ); 
addEvent( "SkinNotSelected", true ); 
addEvent( "SkinRight", true ); 
addEvent( "SkinLeft", true ); 
  
function FrontCamera() 
    if client then 
        local fClientX, fClientY, fClientZ  = getElementPosition( client ); 
         
        setPedRotation( client, 1 ); 
        setCameraMatrix( client, fClientX, fClientY + 5, fClientZ, fClientX, fClientY, fClientZ ); 
    end 
end 
  
function PlayerLogin( thePreviousAccount, theCurrentAccount, autoLogin ) 
    if not isGuestAccount( getPlayerAccount( source ) ) then 
        setElementData( source, "defaultsskin", getElementModel( source ) ); 
    end 
end 
  
function SkinSelected() 
    if client then 
        local iDefaultSkin = getElementData( client, "defaultsskin" ); 
         
        fadeCamera( client, true ); 
        setCameraTarget( client, client ); 
         
        if ( getPlayerMoney( client ) or 0 ) < 100 then 
            setElementModel( client, iDefaultSkin ); 
            outputChatBox( "У Вас недостаточно денег!", client , 255, 0, 0, true ); 
             
            return; 
        end 
         
        takePlayerMoney( client, 100 ); 
        setElementData( source, "defaultsskin", getElementModel( client ) ); 
         
        outputChatBox( "Вы успешно купили скин!", client ); 
    end 
end 
  
function SkinNotSelected() 
    if client then 
        -- local playerskin = getElementData( client, "1skin" ); 
        -- setElementModel( client, playerskin ); 
        fadeCamera( client, true ); 
        setCameraTarget( client, client ); 
        ---outputChatBox( "Skin successfully changed!", client ); 
    end 
end 
  
function SkinRight() 
    if not client then return end 
     
    local iSkin = getElementModel( client ); 
     
    if iSkin == 0 then 
        setElementModel( client, 7 ); 
    elseif iSkin == 7 then 
        setElementModel( client, 9 ); 
    elseif iSkin == 41 then 
        setElementModel( client, 43 ); 
    elseif iSkin == 64 then 
        setElementModel( client, 66 ); 
    elseif iSkin == 85 then 
        setElementModel( client, 87 ); 
    elseif iSkin == 118 then 
        setElementModel( client, 120 ); 
    elseif iSkin == 148 then 
        setElementModel( client, 150 ); 
    elseif iSkin == 207 then 
        setElementModel( client, 209 ); 
    elseif iSkin == 238 then 
        setElementModel( client, 240 ); 
    elseif iSkin == 264 then 
        setElementModel( client, 274 ); 
    elseif iSkin == 288 then 
        setElementModel( client, 0 ); 
    else 
        setElementModel( client, iSkin + 1 ); 
    end 
end 
  
  
function SkinLeft() 
    if not client then return end 
     
    local iSkin = getElementModel( client ); 
  
    if iSkin == 7 then 
        setElementModel( client, 0 ); 
    elseif iSkin == 9 then 
        setElementModel( client, 7 ); 
    elseif iSkin == 43 then 
        setElementModel( client, 41 ); 
    elseif iSkin == 66 then 
        setElementModel( client, 64 ); 
    elseif iSkin == 87 then 
        setElementModel( client, 85 ); 
    elseif iSkin == 120 then 
        setElementModel( client, 118 ); 
    elseif iSkin == 150 then 
        setElementModel( client, 148 ); 
    elseif iSkin == 209 then 
        setElementModel( client, 207 ); 
    elseif iSkin == 240 then 
        setElementModel( client, 238 ); 
    elseif iSkin == 274 then 
        setElementModel( client, 264 ); 
    elseif iSkin == 0 then 
        setElementModel( client, 288 ); 
    else 
        setElementModel( client, iSkin - 1 ); 
    end 
end 
  
addEventHandler( "SkinSelected", root, SkinSelected ); 
addEventHandler( "FrontCamera", root, FrontCamera ); 
addEventHandler( "OnPlayerLogin", root, PlayerLogin ); 
addEventHandler( "SkinNotSelected", root, SkinNotSelected ); 
addEventHandler( "SkinRight", root, SkinRight ); 
addEventHandler( "SkinLeft", root, SkinLeft ); 

Link to comment
В след. раз когда выкладываете скрипт - подумайте о его рефакторинге, чтобы другие могли без труда разобраться в вашем коде.

Я извиняюсь, я учту это в следующий раз.

По поводу скрипта:

дебаг:

[2012-02-25 18:17:45] WARNING: skinselect\s_skinselect.lua:32: Bad argument @ 'setElementModel' 

то есть по сути тоже самое что и до вашего исправления... Как это исправить? :shock:

Link to comment
то есть по сути тоже самое что и до вашего исправления... Как это исправить? :shock:

Залогиниться не пробовал? Твоя идея между прочим (что на мой взгляд - бред, брать текущий скин нужно перед открытием GUI). Поэтому и в ElementData ничего нету.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...