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

Wysłany: 2021-03-18, 22:10


HubertK







Wiek: 20
Na forum: 2451 dni
Posty: 21
Nick w MP: Ave

Piwa: 73

Respekt: 50

Siemka, przerobi?em sobie skrypt przebieralni od Master'a
Na branie skin?w SAPD

jednak chcia?bym aby skiny bra? mogli tylko osoby z grupy ACL o nazwie "SAPD"


kod:

Kod:

local screenX,screenY = guiGetScreenSize ()
local zoom = 1
if screenX < 1920 then
zoom = math.min(2, 1920/screenX)
end

function isCursorOnElement( posX, posY, width, height )
if isCursorShowing( ) then
local mouseX, mouseY = getCursorPosition( )
local clientW, clientH = guiGetScreenSize( )
local mouseX, mouseY = mouseX * clientW, mouseY * clientH
if ( mouseX > posX and mouseX < ( posX + width ) and mouseY > posY and mouseY < ( posY + height ) ) then
return true
end
end
return false
end

local marker = createMarker(253.27382, 76.92149, 1002.64844,"cylinder",1.2,150,150,150,100)
setElementInterior(marker,6)
local bg
local font = dxCreateFont("f/Akrobat-Bold.otf",14)

maleSkins = {280,281,282,283,284,285}
femaleSkins = {286,288}

premium = {10,11,27,17}

local class = {}
class.__index = class

function class:drawElements ()
if self.active then
dxDrawImage(screenX-1600/zoom,100/zoom,420/zoom,120/zoom,"i/main.png")
if self.female or self.male then
if isCursorOnElement(screenX-1600/zoom,220/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,220/zoom,420/zoom,55/zoom,"i/wroc2.png")
else
dxDrawImage(screenX-1600/zoom,220/zoom,420/zoom,55/zoom,"i/wroc.png")
end
end
if self.main then
if isCursorOnElement(screenX-1600/zoom,220/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,220/zoom,420/zoom,55/zoom,"i/meskie2.png")
else
dxDrawImage(screenX-1600/zoom,220/zoom,420/zoom,55/zoom,"i/meskie.png")
end
if isCursorOnElement(screenX-1600/zoom,275/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,275/zoom,420/zoom,55/zoom,"i/zenskie2.png")
else
dxDrawImage(screenX-1600/zoom,275/zoom,420/zoom,55/zoom,"i/zenskie.png")
end
if isCursorOnElement(screenX-1600/zoom,330/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,330/zoom,420/zoom,55/zoom,"i/premium2.png")
else
dxDrawImage(screenX-1600/zoom,330/zoom,420/zoom,55/zoom,"i/premium.png")
end
if isCursorOnElement(screenX-1600/zoom,385/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,385/zoom,420/zoom,55/zoom,"i/wroc2.png")
else
dxDrawImage(screenX-1600/zoom,385/zoom,420/zoom,55/zoom,"i/wroc.png")
end
end
if self.male then
for i = 1+self.scroll,6+self.scroll do
local pos = i - self.scroll
if isCursorOnElement(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom,"i/none2.png")
else
dxDrawImage(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom,"i/none.png")
end
if maleSkins[i] then
dxDrawText(maleSkins[i],screenX-870/zoom,(490+(pos*110))/zoom,10/zoom,10/zoom,tocolor(255,255,255,255),1,font,"center","center",false,false,true)
end
end
end
if self.female then
for i = 1+self.scroll,6+self.scroll do
local pos = i - self.scroll
if isCursorOnElement(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom,"i/none2.png")
else
dxDrawImage(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom,"i/none.png")
end
if femaleSkins[i] then
dxDrawText(femaleSkins[i],screenX-870/zoom,(490+(pos*110))/zoom,10/zoom,10/zoom,tocolor(255,255,255,255),1,font,"center","center",false,false,true)
end
end
end
if self.premium then
for i = 1+self.scroll,6+self.scroll do
local pos = i - self.scroll
if isCursorOnElement(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom,"i/none2.png")
else
dxDrawImage(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom,"i/none.png")
end
if premium[i] then
dxDrawText(premium[i],screenX-870/zoom,(490+(pos*110))/zoom,10/zoom,10/zoom,tocolor(255,255,255,255),1,font,"center","center",false,false,true)
end
end
end
end
end

function class:onMarkerElementHit (el,dim)
if el ~= localPlayer and dim then return end
if getElementType(el) ~= "player" then return end
addEventHandler("onClientRender",root,self.renderFunc)
bg = dxCreateTexture("i/main.png","argb",false,"clamp")
showChat(false)
showCursor(true)
setCameraInterior(6)
Camera.setMatrix(253.62207, 73.87232, 1005.64844)
self.active = true
self.main = true
end

function class:onClick (btn,state)
if btn and getKeyState("mouse1") and state then
if self.active then
if self.main then
if isCursorOnElement(screenX-1500/zoom,220/zoom,420/zoom,55/zoom) then
self.female = false
self.main = false
self.male = true
return end
if isCursorOnElement(screenX-1600/zoom,275/zoom,420/zoom,55/zoom) then
self.male = false
self.main = false
self.female = true
return end
if isCursorOnElement(screenX-1600/zoom,385/zoom,420/zoom,55/zoom) then
removeEventHandler("onClientRender",root,self.renderFunc)
self.active = false
self.scroll = 0
self.main = false
self.female = false
self.male = false
self.premium = false
setCameraTarget(localPlayer,nil)
destroyElement(ped1)
showChat(true)
showCursor(false)
return end
if isCursorOnElement(screenX-1600/zoom,330/zoom,420/zoom,55/zoom) and getElementData(localPlayer,"premium") then
self.main = false
self.premium = true
return end
end
if self.male or self.female or self.premium then
if isCursorOnElement(screenX-1600/zoom,220/zoom,420/zoom,55/zoom) then
self.male = false
self.female = false
self.premium = false
self.scroll = 0
self.main = true
end
end
if self.male then
for i = 1+self.scroll,self.max+self.scroll do
local pos = i - self.scroll
if isCursorOnElement(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom) then
class:selectSkin(maleSkins[i])
end
end
end
if self.female then
for i = 1+self.scroll,self.max+self.scroll do
local pos = i - self.scroll
if isCursorOnElement(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom) then
class:selectSkin(femaleSkins[i])
end
end
end
if self.premium then
for i = 1+self.scroll,self.max+self.scroll do
local pos = i - self.scroll
if isCursorOnElement(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom) then
class:selectSkin(premium[i])
end
end
end
end
end
end

function class:moveUp ()
if self.active then
self.scroll = self.scroll -1 >= 0 and self.scroll -1 or self.scroll
end
end

function class:moveDown ()
if self.active then
if self.male then
self.scroll = self.scroll + 3 + self.max <= #maleSkins and self.scroll + 3 or self.scroll
end
if self.female then
self.scroll = self.scroll + 3 + self.max <= #femaleSkins and self.scroll + 3 or self.scroll
end
end
end

function class:selectSkin (id)
if id then
triggerServerEvent("setPlayerSkin",localPlayer,id)
ped1:setModel(id)
end
end

function class:main ()
self.onMarkerHitFunc = function (a,b) self:onMarkerElementHit (a,b) end
self.onClickFunc = function (a,b) self:onClick (a,b) end
self.moveUpFunc = function () self:moveUp () end
self.moveDownFunc = function () self:moveDown () end
self.renderFunc = function () self:drawElements () end

addEventHandler("onClientMarkerHit",marker,self.onMarkerHitFunc)
addEventHandler("onClientClick",root,self.onClickFunc)

bindKey("mouse_wheel_down","both",self.moveDownFunc)
bindKey("mouse_wheel_up","both",self.moveUpFunc)

self.active = false
self.female = false
self.male = false
self.premium = false
self.main = false
self.scroll = 0
self.max = 10
end

class:main ()
setCameraTarget(localPlayer,nil)

za pomoc stawiam piwko :)

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
borsuk
Wysłany: 2021-03-19, 07:15


Wilq







Wiek: 24
Na forum: 4428 dni
Posty: 3410

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8


Więcej informacji znajdziesz w Wikipedii MTA:

isObjectInACLGroup


W odno?niku (na wiki) masz gotowy kod, kwestia skopiowania i zmiany jednego s?owa.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 2 piw(a):
HubertK, borsuk
Wysłany: 2021-03-19, 09:19


HubertK







Wiek: 20
Na forum: 2451 dni
Posty: 21
Nick w MP: Ave

Piwa: 73

Respekt: 50

Wilq,
Dzi?ki za funkcje, chcia?bym tylko aby? wskaza? w kt?rej linijce wklei? ten kod.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
borsuk
Wysłany: 2021-03-19, 09:24


Wilq







Wiek: 24
Na forum: 4428 dni
Posty: 3410

Piwa: 739

Respekt: 1225,8
Respekt: 1225,8

Weryfikacj? grupy ACL wstawiasz przed ustawieniem skina (funkcja dzia?a po stronie serwera) - wi?c musisz wykona? event do serwera i tam weryfikowa? grup? ACL i je?li pomy?lnie przejdzie weryfikacj? to ustawi? tego skina.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
borsuk
Wysłany: 2021-03-19, 11:59


HubertK







Wiek: 20
Na forum: 2451 dni
Posty: 21
Nick w MP: Ave

Piwa: 73

Respekt: 50

Wilq,
Zrozumia?em to tak i zrobi?em tak xD:

[codelocal marker = createMarker(-1882.8,866.0,36,"arrow",1.2,150,150,150,255)
createBlipAttachedTo(marker,45)

local marker_out = createMarker(207.6,-110.6,1006.1,"arrow",1.2,150,150,150,255)
setElementInterior(marker_out,15)

addEventHandler("onMarkerHit",marker,function(el,dim)
if getElementType(el) == "player" then
fadeCamera(el,false,1)
setTimer(function(el)
setElementPosition(el,207.5430,-109.0040,1005.1330)
setElementInterior(el,15)
fadeCamera(el,true,1)
end,1500,1,el)
end
end)



addEventHandler("onMarkerHit",marker_out,function(el,dim)
if getElementType(el) == "player" then
fadeCamera(el,false,1)
setTimer(function(el)
setElementPosition(el,-1884.1,864.6,35.2)
setElementInterior(el,0)
fadeCamera(el,true,1)
end,1500,1,el)
end
end)

accountname = getAccountName (getPlayerAccount(v))
if isObjectInACLGroup ( "user." .. accountname, aclGetGroup ( "SAPD" ) ) then

addEvent("setPlayerSkin",true)
addEventHandler("setPlayerSkin",root,function(id)
client:setModel(id)
end)][/code]
Nie dzia?a czyli ?le XD, wkleisz to za mnie?



KOD CLIENT:

Kod:

local screenX,screenY = guiGetScreenSize ()
local zoom = 1
if screenX < 1920 then
zoom = math.min(2, 1920/screenX)
end

function isCursorOnElement( posX, posY, width, height )
if isCursorShowing( ) then
local mouseX, mouseY = getCursorPosition( )
local clientW, clientH = guiGetScreenSize( )
local mouseX, mouseY = mouseX * clientW, mouseY * clientH
if ( mouseX > posX and mouseX < ( posX + width ) and mouseY > posY and mouseY < ( posY + height ) ) then
return true
end
end
return false
end

local marker = createMarker(253.27382, 76.92149, 1002.64844,"cylinder",1.2,150,150,150,100)
setElementInterior(marker,6)
local bg
local font = dxCreateFont("f/Akrobat-Bold.otf",14)

maleSkins = {280,281,282,283,284,285}
femaleSkins = {286,288}

premium = {10,11,27,17}

local class = {}
class.__index = class

function class:drawElements ()
if self.active then
dxDrawImage(screenX-1600/zoom,100/zoom,420/zoom,120/zoom,"i/main.png")
if self.female or self.male then
if isCursorOnElement(screenX-1600/zoom,220/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,220/zoom,420/zoom,55/zoom,"i/wroc2.png")
else
dxDrawImage(screenX-1600/zoom,220/zoom,420/zoom,55/zoom,"i/wroc.png")
end
end
if self.main then
if isCursorOnElement(screenX-1600/zoom,220/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,220/zoom,420/zoom,55/zoom,"i/meskie2.png")
else
dxDrawImage(screenX-1600/zoom,220/zoom,420/zoom,55/zoom,"i/meskie.png")
end
if isCursorOnElement(screenX-1600/zoom,275/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,275/zoom,420/zoom,55/zoom,"i/zenskie2.png")
else
dxDrawImage(screenX-1600/zoom,275/zoom,420/zoom,55/zoom,"i/zenskie.png")
end
if isCursorOnElement(screenX-1600/zoom,330/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,330/zoom,420/zoom,55/zoom,"i/premium2.png")
else
dxDrawImage(screenX-1600/zoom,330/zoom,420/zoom,55/zoom,"i/premium.png")
end
if isCursorOnElement(screenX-1600/zoom,385/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,385/zoom,420/zoom,55/zoom,"i/wroc2.png")
else
dxDrawImage(screenX-1600/zoom,385/zoom,420/zoom,55/zoom,"i/wroc.png")
end
end
if self.male then
for i = 1+self.scroll,6+self.scroll do
local pos = i - self.scroll
if isCursorOnElement(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom,"i/none2.png")
else
dxDrawImage(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom,"i/none.png")
end
if maleSkins[i] then
dxDrawText(maleSkins[i],screenX-870/zoom,(490+(pos*110))/zoom,10/zoom,10/zoom,tocolor(255,255,255,255),1,font,"center","center",false,false,true)
end
end
end
if self.female then
for i = 1+self.scroll,6+self.scroll do
local pos = i - self.scroll
if isCursorOnElement(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom,"i/none2.png")
else
dxDrawImage(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom,"i/none.png")
end
if femaleSkins[i] then
dxDrawText(femaleSkins[i],screenX-870/zoom,(490+(pos*110))/zoom,10/zoom,10/zoom,tocolor(255,255,255,255),1,font,"center","center",false,false,true)
end
end
end
if self.premium then
for i = 1+self.scroll,6+self.scroll do
local pos = i - self.scroll
if isCursorOnElement(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom) then
dxDrawImage(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom,"i/none2.png")
else
dxDrawImage(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom,"i/none.png")
end
if premium[i] then
dxDrawText(premium[i],screenX-870/zoom,(490+(pos*110))/zoom,10/zoom,10/zoom,tocolor(255,255,255,255),1,font,"center","center",false,false,true)
end
end
end
end
end

function class:onMarkerElementHit (el,dim)
if el ~= localPlayer and dim then return end
if getElementType(el) ~= "player" then return end
addEventHandler("onClientRender",root,self.renderFunc)
bg = dxCreateTexture("i/main.png","argb",false,"clamp")
showChat(false)
showCursor(true)
setCameraInterior(6)
Camera.setMatrix(253.62207, 73.87232, 1005.64844)
self.active = true
self.main = true
end

function class:onClick (btn,state)
if btn and getKeyState("mouse1") and state then
if self.active then
if self.main then
if isCursorOnElement(screenX-1500/zoom,220/zoom,420/zoom,55/zoom) then
self.female = false
self.main = false
self.male = true
return end
if isCursorOnElement(screenX-1600/zoom,275/zoom,420/zoom,55/zoom) then
self.male = false
self.main = false
self.female = true
return end
if isCursorOnElement(screenX-1600/zoom,385/zoom,420/zoom,55/zoom) then
removeEventHandler("onClientRender",root,self.renderFunc)
self.active = false
self.scroll = 0
self.main = false
self.female = false
self.male = false
self.premium = false
setCameraTarget(localPlayer,nil)
destroyElement(ped1)
showChat(true)
showCursor(false)
return end
if isCursorOnElement(screenX-1600/zoom,330/zoom,420/zoom,55/zoom) and getElementData(localPlayer,"premium") then
self.main = false
self.premium = true
return end
end
if self.male or self.female or self.premium then
if isCursorOnElement(screenX-1600/zoom,220/zoom,420/zoom,55/zoom) then
self.male = false
self.female = false
self.premium = false
self.scroll = 0
self.main = true
end
end
if self.male then
for i = 1+self.scroll,self.max+self.scroll do
local pos = i - self.scroll
if isCursorOnElement(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom) then
class:selectSkin(maleSkins[i])
end
end
end
if self.female then
for i = 1+self.scroll,self.max+self.scroll do
local pos = i - self.scroll
if isCursorOnElement(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom) then
class:selectSkin(femaleSkins[i])
end
end
end
if self.premium then
for i = 1+self.scroll,self.max+self.scroll do
local pos = i - self.scroll
if isCursorOnElement(screenX-1600/zoom,(220+(pos*55))/zoom,420/zoom,55/zoom) then
class:selectSkin(premium[i])
end
end
end
end
end
end

function class:moveUp ()
if self.active then
self.scroll = self.scroll -1 >= 0 and self.scroll -1 or self.scroll
end
end

function class:moveDown ()
if self.active then
if self.male then
self.scroll = self.scroll + 3 + self.max <= #maleSkins and self.scroll + 3 or self.scroll
end
if self.female then
self.scroll = self.scroll + 3 + self.max <= #femaleSkins and self.scroll + 3 or self.scroll
end
end
end

function class:selectSkin (id)
if id then
triggerServerEvent("setPlayerSkin",localPlayer,id)
ped1:setModel(id)
end
end

function class:main ()
self.onMarkerHitFunc = function (a,b) self:onMarkerElementHit (a,b) end
self.onClickFunc = function (a,b) self:onClick (a,b) end
self.moveUpFunc = function () self:moveUp () end
self.moveDownFunc = function () self:moveDown () end
self.renderFunc = function () self:drawElements () end

addEventHandler("onClientMarkerHit",marker,self.onMarkerHitFunc)
addEventHandler("onClientClick",root,self.onClickFunc)

bindKey("mouse_wheel_down","both",self.moveDownFunc)
bindKey("mouse_wheel_up","both",self.moveUpFunc)

self.active = false
self.female = false
self.male = false
self.premium = false
self.main = false
self.scroll = 0
self.max = 10
end

class:main ()
setCameraTarget(localPlayer,nil)


KOD SERVER:
Kod:

local marker = createMarker(-1882.8,866.0,36,"arrow",1.2,150,150,150,255)
createBlipAttachedTo(marker,45)

local marker_out = createMarker(207.6,-110.6,1006.1,"arrow",1.2,150,150,150,255)
setElementInterior(marker_out,15)

addEventHandler("onMarkerHit",marker,function(el,dim)
if getElementType(el) == "player" then
fadeCamera(el,false,1)
setTimer(function(el)
setElementPosition(el,207.5430,-109.0040,1005.1330)
setElementInterior(el,15)
fadeCamera(el,true,1)
end,1500,1,el)
end
end)



addEventHandler("onMarkerHit",marker_out,function(el,dim)
if getElementType(el) == "player" then
fadeCamera(el,false,1)
setTimer(function(el)
setElementPosition(el,-1884.1,864.6,35.2)
setElementInterior(el,0)
fadeCamera(el,true,1)
end,1500,1,el)
end
end)

addEvent("setPlayerSkin",true)
addEventHandler("setPlayerSkin",root,function(id)
client:setModel(id)
end)


Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
borsuk
Tagi: skiny
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA » Skiny Odpowiedz do tematu

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