Jump to content

H1TM4N

Members
  • Posts

    112
  • Joined

  • Last visited

Everything posted by H1TM4N

  1. Помогите пожалуйста. Хочу сделать сохранение очков за дрифтинг, но запарился на их загрузке при входе. Сделал сохранение очков через setAccountData, проверил в internal все сохранилось. Но знаний по люа недостаточно чтобы понять что к чему в этом скрипте и куда надо подгружать сохраненные данные. В общем нужно сделать чтобы при входе в списке игроков были показаны сохраненные данные, а не нулевые. Вот скрипты: drft.lua --these are the banned vehicle ids where you cannot get drift points. local BannedIDs = { 432, 532 } local rootElem = getRootElement() local thisRoot = getResourceRootElement(getThisResource()) local player = getLocalPlayer() local vehicle local size = 1.2 local modo = 0.01 local score = 0 local screenScore = 0 local tick local idleTime local multTime local driftTime local Yellow = tocolor(255,232,25) local Red = tocolor(234,0,3) local TempCol = Yellow local mult = 1 local tablamult = {350,1400,4200,11200} local anterior = 0 local mejor = 0 local total = 0 local global_mejor = 0 local global_nombre = "N/A" local screenWidth, screenHeight = guiGetScreenSize() local x1,y1,x2,y2 = screenWidth*0.2,screenHeight*0.1,screenWidth*0.8,screenHeight*0.8 addEventHandler("onClientResourceStart", thisRoot, function() addEventHandler("onClientRender", rootElem, showText) outputChatBox("Waiting for server drift data...") triggerServerEvent("driftClienteListo", rootElem, player) end ) addEventHandler("onClientResourceStop", thisRoot, function() removeEventHandler("onClientRender", rootElem, showText) end ) function isValidVehicle() local temp = getPedOccupiedVehicle(player) if not temp or getVehicleOccupant(temp,0) ~= player or getVehicleType" class="kw2">getVehicleType(temp) ~= "Automobile" then return false end local vehID = getElementModel(temp) for k,v in ipairs(BannedIDs) do if vehID == v then return false end end return temp end function showText() dxDrawText(string.format("Best Drift: %s - %d",global_nombre,global_mejor),44,screenHeight-43,screenWidth,screenHeight,Yellow,1,"pricedown") vehicle = isValidVehicle() if not vehicle then return end if size > 1.3 then modo = -0.01 elseif size < 1.2 then modo = 0.01 end size = size + modo tick = getTickCount() local angulo,velocidad = angle() local tempBool = tick - (idleTime or 0) < 750 if not tempBool and score ~= 0 then anterior = score setElementData(player, "Last Drift", anterior) total = total+anterior setElementData(player, "Total Drift", total) if score > mejor then mejor = score setElementData(player, "Best Drift", mejor) end triggerEvent("onVehicleDriftEnd", rootElem, tick-driftTime-750) score = 0 end if angulo ~= 0 then if score == 0 then triggerEvent("onVehicleDriftStart", rootElem) driftTime = tick end if tempBool then score = score + math.floor(angulo*velocidad)*mult else score = math.floor(angulo*velocidad)*mult end if TempCol == Red then TempCol = Yellow end screenScore = score idleTime = tick end local temp2 = string.format("Factor: X%d\n%s",mult,mult~=5 and string.format("Gain X%d with %d",mult+1,tablamult[mult]) or "MAX") dxDrawText(temp2, 20,155,screenWidth,screenHeight, Yellow, 1.2, "sans","left","top", false,true,false) if velocidad <= 0.3 and mult ~= 1 then dxDrawText("\n\nToo Slow!", 20,155,screenWidth,screenHeight, Yellow, 1.2, "sans","left","top", false,true,false) end if tick - (idleTime or 0) < 3000 then local temp = "DRIFT" if score >= 100000 then temp = "DRIFT\n\nDrift King!" elseif score >= 50000 then temp = "DRIFT\n\nInsane Drift!" elseif score >= 20000 then temp = "DRIFT\n\nOutrageous!" elseif score >= 15000 then temp = "DRIFT\n\nColossal!" elseif score >= 7000 then temp = "DRIFT\n\nSuberb!" elseif score >= 3000 then temp = "DRIFT\n\nGreat Drift!" elseif score >= 1000 then temp = "DRIFT\n\nGood Drift!" end dxDrawText(temp, x1,y1,x2,y2, TempCol, 2.2, "sans","center","top", false,true,false) dxDrawText(string.format("\n%d",screenScore), x1,y1-10,x2,y2, TempCol, size, "pricedown","center","top", false,true,false) end end function angle() local vx,vy,vz = getElementVelocity(vehicle) local modV = math.sqrt(vx*vx + vy*vy) if not isVehicleOnGround(vehicle) then return 0,modV end local rx,ry,rz = getElementRotation(vehicle) local sn,cs = -math.sin(math.rad(rz)), math.cos(math.rad(rz)) local deltaT = tick - (multTime or 0) if mult~= 1 and modV <= 0.3 and deltaT > 750 then mult = mult-1 multTime = tick elseif deltaT > 1500 then local temp = 1 if score >= 11200 then temp = 5 elseif score >= 4200 then temp = 4 elseif score >= 1400 then temp = 3 elseif score >= 350 then temp = 2 end if temp>mult then mult = temp multTime = tick end end if modV <= 0.2 then return 0,modV end --speed over 40 km/h local cosX = (sn*vx + cs*vy)/modV if cosX > 0.966 or cosX < 0 then return 0,modV end --angle between 15 and 90 degrees return math.deg(math.acos(cosX))*0.5, modV end addEvent("driftCarCrashed", true) addEventHandler("driftCarCrashed", rootElem, function() if score ~= 0 then score = 0 mult = 1 TempCol = Red triggerEvent("onVehicleDriftEnd", rootElem, 0) end end ) addEvent("driftActualizarRecord", true) addEventHandler("driftActualizarRecord", rootElem, function(score, name) global_mejor = score global_nombre = name end ) function resetScore() anterior,mejor,total = 0,0,0 setElementData(player, "Last Drift", anterior) setElementData(player, "Total Drift", total) setElementData(player, "Best Drift", mejor) end addEvent("driftResetAllScores", true) addEventHandler("driftResetAllScores", rootElem, resetScore) addCommandHandler("resetdrift", resetScore) function checkPuntaje() if total > global_mejor then triggerServerEvent("driftNuevoRecord", rootElem, total, getPlayerName(player)) end end addEventHandler("onClientPlayerFinish", rootElem, checkPuntaje) addEventHandler("onClientPlayerOutOfTime", rootElem, checkPuntaje) drft_server.lua local root = getRootElement() local thisResourceRoot = getResourceRootElement(getThisResource()) local drift_records = {} local drift_mejor = 0 local drift_nombre = "N/A" addEventHandler ( "onResourceStart", thisResourceRoot, function() call(getResourceFromName("scoreboard"), "addScoreboardColumn", "Best Drift") call(getResourceFromName("scoreboard"), "addScoreboardColumn", "Last Drift") call(getResourceFromName("scoreboard"), "addScoreboardColumn", "Total Drift") executeSQLCreateTable("recordsDrift","pista TEXT, nombre TEXT, score INTEGER") addEvent("driftClienteListo", true) addEventHandler("driftClienteListo", root, function(player) triggerClientEvent(player, "driftActualizarRecord", root, drift_mejor, drift_nombre) if drift_mejor == 0 then outputChatBox("There's no record set on this map", player) else outputChatBox(string.format("The current record is %d points (%s)", drift_mejor, drift_nombre), player) end end) end ) addEventHandler ( "onResourceStop", thisResourceRoot, function() call(getResourceFromName("scoreboard"), "removeScoreboardColumn", "Best Drift") call(getResourceFromName("scoreboard"), "removeScoreboardColumn", "Last Drift") call(getResourceFromName("scoreboard"), "removeScoreboardColumn", "Total Drift") end ) addEventHandler ( "onGamemodeMapStart", root, function(mapResource) local mapname = getResourceInfo(mapResource, "name") or getResourceName(mapResource) local command = string.format("pista='%s'",mapname) local record = executeSQLSelect("recordsDrift","nombre, score",command) if #record == 0 then executeSQLInsert("recordsDrift",string.format("'%s', 'N/A', 0",mapname)) drift_mejor = 0 drift_nombre = "N/A" else drift_mejor = record[1]["score"] drift_nombre = record[1]["nombre"] end triggerClientEvent(root, "driftActualizarRecord", root, drift_mejor, drift_nombre) triggerClientEvent(root, "driftResetAllScores", root) if drift_mejor == 0 then outputChatBox("There's no record set on this map") else outputChatBox(string.format("The current record is %d points (%s)", drift_mejor, drift_nombre)) end end) addEventHandler ( "onGamemodeMapStop", root, function(mapResource) local mapname = getResourceInfo(mapResource, "name") or getResourceName(mapResource) if not mapname then return end local command = string.format("pista='%s'",mapname) executeSQLUpdate("recordsDrift",string.format("nombre = '%s', score = %d", drift_nombre, drift_mejor), command) end) addEventHandler("onVehicleDamage", root, function() thePlayer = getVehicleOccupant(source, 0) if thePlayer then triggerClientEvent(thePlayer, "driftCarCrashed", root, source) end end) addEvent("driftNuevoRecord", true) addEventHandler("driftNuevoRecord", root, function(score, name) if score > drift_mejor then outputChatBox(string.format("New drift record! (%d points) (%s)",score,name)) drift_mejor = score drift_nombre = name triggerClientEvent(root, "driftActualizarRecord", root, drift_mejor, drift_nombre) end end)
  2. Возможно загнать свое изображение под стандартный худ?
  3. Возможно привязать вращение карты на радаре с лева в низу к углу поворота педа, а не углу поворота мыши? Ну чтобы она поворачивалась только тогда когда пед движется и вертится.
  4. function importTextures2() txd = engineLoadTXD ( "obj.txd" ) engineImportTXD ( txd, 1515 ) col = engineLoadCOL ( "obj.col" ) dff = engineLoadDFF ( "obj.dff", 0 ) engineReplaceCOL ( col, 1515 ) engineReplaceModel ( dff, 1515 ) engineSetModelLODDistance(1515, 800) end setTimer ( importTextures2, 3000, 1) addEventHandler("onClientResourceStop", getResourceRootElement(getThisResource()), function() engineRestoreCOL(1515) engineRestoreModel(1515) destroyElement(dff) destroyElement(col) destroyElement(txd) end ) <meta> <script src='script.lua' type='client' /> <file src='obj.txd' /> <file src='obj.col' /> <file src='obj.dff' /> </meta> ну и 3 файла для самого объекта в архиве. В общем проблема в том что моделька нового объекта иногда грузится только визуально, через нее можно проходить. В логах ничего про это нет. Иногда помогает переподключение игроков к серверу и объект становится нормальным. p.s. я уже думал так и оставить, но кто будет так играть с перезаходами по 5-10 раз.
  5. Спасибо. Заменил несколько стандартных объектов, но бывает такое что висит одна текстура через которую можно спокойно проходить (как текстура травки ). Заменял по 3 файла .dff .txd .col. Я так понял что .col иногда не грузится именно у клиента, по тому что реконнект иногда помогает в этом случае. Это баг мта или что?
  6. ну дык это можно сделать, нужно указать ид скина 0 вторым параметром в engineReplaceModel Ну нулевой скин заменится, но одежду нельзя будет менять. Верно? И можно еще узнать, какие функции используются для определения с какого именно оружия было убийство.
  7. MX_Master, я думал заменить саму модель cj'я, уж сильно надоела его физиономия.
  8. Бывают id частей тела cj'я как объектов? Голова руки ноги и т.д. если да, то где можно их посмотреть?
  9. _Dark_, не надо на меня давить и давай на чистоту. Я самоучка в павно. В самп писал скрипты и переделывал моды на "любителя", в паблике моих работ нет т.к. пишу для себя. В павно я многое понимаю, но не знаю как и что называется, от чего мне приходится гуглить чуть ли не каждое "заумное" слово про скриптинг из ваших ответов. Да и задавать каждый вопрос по сравнению к пешке по моему не красиво, т.к. тут совсем другое. Так что извиняйте что приходится иногда тупить спасибо с уровнем, разобрался все работает
  10. Блин я по ходу долго буду вникать во все это Хочу сделать сохранение уровней и убийства игроков, а как это сделать не понимаю. С деньгами я вроде разобрался, нашел в одном скрипте идеальный пример. Отключаясь сохраняем счет, подключаясь загружаем счет. setAccountData ( playeraccount, "s.HandMoney", getPlayerMoney ( source ) ) local playermoney = getAccountData ( playeraccount, "s.HandMoney" ) if ( playermoney ) then setPlayerMoney ( source, playermoney ) end Как добавлять уровень и убийства я не понял, что нужно вместо getPlayerMoney и setPlayerMoney ставить?
  11. Как создать глобальную переменную? Мне для использования этой переменной из одного скрипта, в другом. Такое реально в мта?)
  12. Всем привет. Я хочу научится скриптингу в мта. Раньше писал в пешке и думаю что тут не очень много отличий. В общем сервер создал, выбрал готовый мод. Теперь хочется его настроить под себя. 1. Каким образом в мта работает система регистрации/авторизации и где ее найти? 2. В какой файл идут зарегистрированые пользователи?
×
×
  • Create New...