Jump to content

Как сделать свой собственный мод?


Recommended Posts

Здраствуйте :) . Сегодня захотел написать какойто свой мини модик, и за основу взял "play". Ну что я сделал. Сделал копию папки "play", дал ей своё название, изменил стандартные названия файлов: brohp.lua, и brohp.map на своё. В meta.xml отредактировал всё на своё. Но мод почемуто не запускается, и не видно его в админ панеле "P". :(

Кстати, вот что у меня в meta.ml:

    "Nanotech.ua" description="Nanomode" version="0.1" type="gamemode" /> 
        "help.xml" type="client" /> 
  
    

:!::!::!:Поясните мне нубу, пожалуйста! Что я не так делаю?) Я, какбы сказать, только 2-й день занимаюсь скриптингом в МТА, так что прошу не орать на меня в данной теме) :lol: .

Link to comment

nanotech'нологии в действии (: А ведь в былые времена именно так были "написаны" сотни "разных" модов в соседнем мультиплеере. Твой способ должен утвердить этот, неуловимый прежде, эталон начала "собственного" мода.

ну не может быть у ресурса такого названия

resource="modes/helpmanager" /> 

Link to comment
nanotech'нологии в действии (:

Ну так то да) :lol::lol:

А ведь в былые времена именно так были "написаны" сотни "разных" модов в соседнем мультиплеере.

Да да да, именно так :)! Да и я также делал когда еще с павно занимался :).

Твой способ должен утвердить этот, неуловимый прежде, эталон начала "собственного" мода.

Ну да. :)

ну не может быть у ресурса такого названия

resource="modes/helpmanager" /> 

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

-

Кстате, кто знает в чем проблемма, отписывайтесь, плз). Очень надо....... ;d

Link to comment

в этом параметре нужно указывать просто название. Если ты этот ресурс не будешь менять, то и в свой мод копировать ресурс не надо.

если в meta.xml будет хоть что-то неправильно или указанные файлы/ресурсы не будут найдены, ресурс не запустится и даже не будет в списке ресурсов. Поэтому исправьте все ошибки там и проверьте расположение файлов.

юзай в консоли debugscript 3 (нужно залогиниться под админом) для дебага и refresh для обновления списка ресурсов после каких-то изменений ресурса при включенном сервере

и попробуй

    "Nanotech.ua" description="Nanomode" version="0.1" type="gamemode" /> 
  
    

Link to comment

Ой :lol: Просто я в [gamemodes] создал простую папку, и в неё кидал все файлы). А должна же быть зип папка в той папке мода :D. Ошибся я, сори :)

-

И да MX_Master, спасибо за инфу!

И кстате, у меня что-то не работает скрипт ktypestatus...

Вот покажу коды.

Это в ktypestatus.lua:

addEvent("playerChatting", true ) 
addEvent("playerNotChatting", true ) 
  
function playerChatting() 
         
    triggerClientEvent("updateChatList", getRootElement(), source, true) 
end 
  
function playerNotChatting() 
         
    triggerClientEvent("updateChatList", getRootElement(), source, false) 
end 
  
addEventHandler("playerChatting", getRootElement(), playerChatting) 
addEventHandler("playerNotChatting", getRootElement(), playerNotChatting) 
addEventHandler ("onPlayerQuit", getRootElement(), playerNotChatting ) 

А это в ktypestatus_cl.lua:

local showMyIcon = true 
local chattingPlayers = {} 
local drawDistance = 1000 
local transicon = false 
local chatIconFor = {} 
  
local screenSizex, screenSizey = guiGetScreenSize() 
local guix = screenSizex * 0.1 
local guiy = screenSizex * 0.1 
local globalscale = 1 
local globalalpha = .85 
  
addEvent("updateChatList", true ) 
  
gChatting = false 
  
function chatCheckPulse() 
    local chatState = isChatBoxInputActive() or isConsoleActive() 
  
    if chatState ~= gChatting then 
        if chatState then 
            triggerServerEvent("playerChatting", getLocalPlayer()) 
        else 
            triggerServerEvent("playerNotChatting", getLocalPlayer()) 
        end 
        gChatting = chatState 
    end 
    setTimer( chatCheckPulse, 250, 1) 
end 
  
function showTextIcon() 
    local playerx,playery,playerz = getElementPosition ( getLocalPlayer() ) 
    for player, truth in pairs(chattingPlayers) do 
         
        if (player == getLocalPlayer()) then 
            if(not showMyIcon) then 
                return 
            end 
        end 
     
        if(truth) then 
            local chatx, chaty, chatz = getElementPosition( player ) 
            if(isPlayerInVehicle(player)) then 
                chatz = chatz + .5 
            end 
            local dist = getDistanceBetweenPoints3D ( playerx, playery, playerz, chatx, chaty, chatz ) 
            if dist < drawDistance then 
                if( isLineOfSightClear(playerx, playery, playerz, chatx, chaty, chatz, true, false, false, false )) then 
                    local screenX, screenY = getScreenFromWorldPosition ( chatx, chaty, chatz+1.2 ) 
                     
                    local scaled = screenSizex * (1/(2*(dist+5))) *.85 
                    local relx, rely = scaled * globalscale, scaled * globalscale 
                    -- -.0025 * dist+.125 
                    --if(dist < 1) then 
                    --  relx, rely = guix, guiy 
                    --end 
                    guiSetAlpha(chatIconFor[player], globalalpha) 
                    guiSetSize(chatIconFor[player], relx, rely, false) 
                    guiSetPosition(chatIconFor[player], screenX, screenY, false) 
                    if(screenX and screenY) then 
                        guiSetVisible(chatIconFor[player], true) 
                    end 
                end 
            end 
        end 
    end 
end 
  
function updateList(newEntry, newStatus) 
    chattingPlayers[newEntry] = newStatus 
    if(not chatIconFor[newEntry]) then 
        chatIconFor[newEntry] = guiCreateStaticImage(0, 0, guix, guiy, "chat.png", false ) 
    end 
    guiSetVisible(chatIconFor[newEntry], false) 
end 
  
function toggleIcon() 
    outputChatBox ( "Your icon is: " ) 
    if( showMyIcon ) then 
        showMyIcon = false 
        outputChatBox ( "off", 255, 0, 0) 
    else 
        showMyIcon = true 
        outputChatBox ( "on", 0, 255, 0) 
    end 
end 
  
function resizeIcon( command, newSize ) 
    if(newSize) then 
        local resize = tonumber( newSize ) 
        local percent = resize/100 
        globalscale = percent 
    end 
    outputChatBox("Chat icons are "..(globalscale * 100).."% normal size") 
end 
  
function setIconAlpha( command, newSize ) 
    if(newSize) then 
        globalalpha = tonumber( newSize ) / 100 
    end 
    outputChatBox("Chat icons are "..(globalalpha * 100).."% visible") 
end 
  
addEventHandler ( "updateChatList", getRootElement(), updateList ) 
  
addEventHandler ( "onClientResourceStart", getRootElement(), chatCheckPulse ) 
addEventHandler ( "onClientPlayerJoin", getRootElement(), chatCheckPulse ) 
addEventHandler ( "onClientRender", getRootElement(), showTextIcon ) 
  
addCommandHandler( "toggleicon", toggleIcon) 
addCommandHandler( "resizeicon", resizeIcon) 
addCommandHandler( "seticonvis", setIconAlpha) 

И вокне сервера пишет:

ERROR: unzipped\nanomode\modes\ktypestatus_cl.lua:7: attempt to call global 'guiGetScreenSize' (a nil value)

Я ничего вообще не изменял там...что это запроблемма может быть? :(

Link to comment

парочка советов по началу любого мода

  • ZIPовать ресурсы не обязательно
  • [папка с квадратными скобками] в имени это не папка какого-то ресурса, это сборник ресурсов. В таких папках должны быть папки ресурсов без квадратных скобок в имени или такие же папки-сборники. Пример иерархии мода
    [myGamemode] 
        | 
        +-- [miniMissions] 
        |       | 
        |       +-- trainDriver 
        |       |       | 
        |       |       +-- trainDriver_srv.lua 
        |       |       +-- trainDriver_cln.lua 
        |       | 
        |       +-- taxiDriver 
        |               | 
        |               +-- taxiDriver_srv.lua 
        |               +-- taxiDriver_cln.lua 
        | 
        +-- mainResource 
        |       | 
        |       +-- playersSpawn_srv.lua 
        |       +-- skinSelector_srv.lua 
        |       +-- skinSelector_cln.lua 
        | 
        +-- myTools 
                | 
                +-- tableFunctions.lua 
                +-- mySQLFunctions_srv.lua 
      
    


  • также нужно как минимум прочесть про:

а все, что касается скриптинга, ошибок в коде - прошу писать в секцию форума про скриптинг

Link to comment

Брать что-либо за основу для написания своего мода - бред.

Кто знает GF в SAMP с его "За основу взят стандартный God Father".

Лучше с самого нуля писать свой код. Даже просто перепечатывать. Зато вы будете знать за что отвечает каждая переменная, каждая функция вашего кода.

Link to comment

MX_Master, спасибо большое за инфу, в скором времени прочту то что ты кинул(имеется ввиду вики)

Брать что-либо за основу для написания своего мода - бред.

Кто знает GF в SAMP с его "За основу взят стандартный God Father".

Лучше с самого нуля писать свой код. Даже просто перепечатывать. Зато вы будете знать за что отвечает каждая переменная, каждая функция вашего кода.

Эм, ну Play не такой уж и большой мод :). Да я и думал вообщето так, полностю с нуля :). Спасибо за совет, возможно так и сделаю! :)

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...