Jump to content

Jirppa

Members
  • Posts

    5
  • Joined

  • Last visited

Posts posted by Jirppa

  1. On 12.6.2017 at 08:14, Anubhav said:

    If I wanted you to make that script, how much would you cost? (Your customers who need an price, can assume and estimate if it is in your budget, from this pricing)

    Thanks for your question and sorry for late reply! That greenzone cleaner script would be something about 4-5€ probably. And that gangsystem is kinda big one to describe any standard price. Maybe something like 30-50€. I really cant say any accurate price. Pricing of bigger systems needed to be discussed and thinked.

  2. Hi!
    You asked for some show about my previous works:

    Here is screenshot of that gangpanel with almost all of windows included on it opened:

    Here is to see my coding in a script which cleans default spawnzones of vehicles:

    Spoiler
    
    local destroyTime = 60000 --Time in milliseconds to destroy abandoned vehicles in spawnzones 
    
    local spawnzones =
    {
        {x = 2467.42, y = -1686.06, z = 12, width = 37, depth = 36, height = 15}, -- Grove Street
        {x = 1987.69, y = 1503.08, z = 8, width = 40, depth = 70, height = 25}, -- LV Pirate ship
        {x = -727.38, y = 930.76, z = 11, width = 60, depth = 60, height = 25}, -- Wooden house thing
        {x = -2420, y = -626.2, z = 125, width = 60, depth = 60, height = 30}, -- San Fierro antenna
    }
    
    local eventsWhenShouldUnhandle =
    {
        ["onPlayerVehicleEnter"] = true,
        ["onPlayerVehicleExit"] = true,
        ["onPlayerWasted"] = true,
    }
    local vehicleDestroyTimers = {}
    local handledElements = {}
    local deadPlayerVehicles = {}
    
    local function checkElement(element,colshapeToCompare)
    
        local occupants = {}
        local ret = true
        
        if not isElement(element) then ret = false end
        if element.type ~= "vehicle" then ret = false end
        if element.dimension ~= colshapeToCompare.dimension then ret = false end
        if element.interior ~= colshapeToCompare.interior then ret = false end
        
        if ret then occupants = getVehicleOccupants(element) end
        
        return ret,(next(occupants) == nil),occupants
    
    end
    
    local function destroyVehicle(vehicle)
    
        if isElement(vehicle) then
            destroyElement(vehicle)
            vehicleDestroyTimers[vehicle] = nil
        end
    
    end
    
    local function unhandlePlayer(player)
    
        player = (isElement(player) and player or source)
    
        if handledElements[player] then
            removeEventHandler("onPlayerVehicleExit",player,setVehicleDestroyTimer)
            removeEventHandler("onPlayerWasted",player,setVehicleDestroyTimer)
            removeEventHandler("onPlayerQuit",player,unhandlePlayer)
            deadPlayerVehicles[player] = nil
            handledElements[player] = nil
        end
    
    end
    
    local function handlePlayer(player)
    
        if not handledElements[player] then
            addEventHandler("onPlayerVehicleExit",player,setVehicleDestroyTimer)
            addEventHandler("onPlayerWasted",player,setVehicleDestroyTimer)
            addEventHandler("onPlayerQuit",player,unhandlePlayer)
            unsetVehicleDestroyTimer(source)
            deadPlayerVehicles[player] = source
            handledElements[player] = true
        end
    
    end
    
    local function handleVehicle(vehicle)
    
        if not handledElements[vehicle] then
            addEventHandler("onVehicleEnter",vehicle,handlePlayer)
            handledElements[vehicle] = true
        end
    
    end
    
    local function unhandleVehicle(vehicle)
    
        if handledElements[vehicle] then
            removeEventHandler("onVehicleEnter",vehicle,handlePlayer)
            handledElements[vehicle] = nil
        end
    
    end
    
    function unsetVehicleDestroyTimer(element)
    
        local isValid,isEmpty,occupants = checkElement(element,source)
        
        if not isValid then return end
    
        local timer = vehicleDestroyTimers[element]
        if timer then
            if isTimer(timer) then killTimer(timer) end 
            vehicleDestroyTimers[element] = nil
        end
        
        if not isEmpty then
            for seat,occupant in pairs(occupants) do
                unhandlePlayer(occupant)
            end
        end
    
    end
    
    function setVehicleDestroyTimer(element)
        
        if eventName == "onPlayerWasted" and deadPlayerVehicles[source] then
            element = deadPlayerVehicles[source]
        end
        
        local isValid,isEmpty,occupants = checkElement(element,source)
        
        if not isValid then return end
        
        if isEmpty then 
            if not (vehicleDestroyTimers[element] or isTimer(vehicleDestroyTimers[element])) then vehicleDestroyTimers[element] = setTimer(destroyVehicle,destroyTime,1,element) end
            handleVehicle(element)
        else
            unhandleVehicle(element)
            for seat,occupant in pairs(occupants) do
                handlePlayer(occupant)
            end
        end
        
        if eventsWhenShouldUnhandle[eventName] then
            unhandlePlayer(source)
        end
    
    end
    
    local function initScript()
    
        for _,zone in pairs(spawnzones) do
            local colshape = createColCuboid(zone.x,zone.y,zone.z,zone.width,zone.depth,zone.height)
            local vehiclesInColshape = getElementsWithinColShape(colshape,"vehicle")
            for _,vehicle in ipairs(vehiclesInColshape) do
                setVehicleDestroyTimer(vehicle)
            end
            addEventHandler("onColShapeHit",colshape,setVehicleDestroyTimer)
            addEventHandler("onColShapeLeave",colshape,unsetVehicleDestroyTimer)
        end
    
    end
    
    addEventHandler("onResourceStart",resourceRoot,initScript)

     

     

  3. Hi!
    My Skype is "tunturihuvila". You can contact me directly via Skype.
    If you like to see some of my work live, visit this server
    mtasa://212.66.193.182:22003

    Not all stuff there are made by me, but for example the gangsystem i mentioned is running there. Welcome!

  4. Hey!
    Are you in need of a experienced scripter? Then you have opened the right topic!

    What can you do?

    I have 3 years experience of scripting and i have done many systems, maybe the biggest one is a gang system with gang ranks, gang rights and all that stuff. My goal is that my scripts are optimized and running smoothly without eating lot of resources and are also player-friendly. Do you have a ready server but it's resources needs fixing due to they being messy, having bugs or lagging the server? I can do that too!

    Sounds awesome, what is the price then?

    Scripting price depends on many things and it needs to be talked about before starting the project! There are a lot of possibilities. There are few examples:

    Project-specific pricing: We do a plan about server needs, resources needed and all that stuff and i script the server and you pay X amount of money for it.
    Resource-specific pricing: You pay for resources, not for whole server.


    How can i pay?
    I accept few payment methods listed here:

    • Paypal
    • Paysafecard*

     

    I am interested. How to contact me?

    You can contact me via Skype: tunturihuvila or send me email: [email protected]

     

    *When paying with paysafecard, the price includes 25% fee

×
×
  • Create New...