• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • New resources must be posted under Resources tab. A discussion thread will be created automatically, you can't open threads manually anymore.

I'm noob, how to make this race system work?

Look dear, The best thing is.. Dont waste your time looking for hard things,etc! Heres a talkaction by many features!
1:::
Talkaction > Scripts > Make a new car.lua also put this on talkactions.xml:

Code:
<talkaction words="!car" event="script" value="car.lua"/>

Also put this on car.lua :>:

Code:
--<< Configurable >>-- Rep me if i helped ya ^^ (By ANAS!)
local storages = { speed = 314622, status = 352993 } -- Empty storages
 
local cfg = {	min_speed = 400,  						-- better not increase than that [ the least speed for a car ]
					max_speed = 90,							-- better not decrease than this [ the maximum speed for a car ]
					Increase_per_command = 60, 				-- The speed increase or decrease value per each command (!car speed // !car slow)
					Car_Explode = true -- Keep it true , so your map isnt filled with cars
				}
-->> END <<--
 
--<< Functions >>--
 
function isWalkable(pos, creature, proj, pz)-- by Nord
	if getTileThingByPos({x = pos.x, y = pos.y, z = pos.z, stackpos = 0}).itemid == 0 then return false end
	if getTopCreature(pos).uid > 0 and creature then return false end
	if getTileInfo(pos).protection and pz then return false, true end
	local n = not proj and 3 or 2
	for i = 0, 255 do
		pos.stackpos = i
		local tile = getTileThingByPos(pos)
		if tile.itemid ~= 0 and not isCreature(tile.uid) then
			if hasProperty(tile.uid, n) or hasProperty(tile.uid, 7) then
				return false
			end
		end
	end
	return true
end
 
function getCarSpeed(cid) return getPlayerStorageValue(cid,storages.speed) end
function setCarSpeed(cid,value) return setPlayerStorageValue(cid,storages.speed, getPlayerStorageValue(cid,storages.speed) + value) end
function setCarStatus(cid,value) return setPlayerStorageValue(cid,storages.status,value) end
function carMove(cid) return getPlayerStorageValue(cid,storages.status) > 0 and true or false end
 
function move(cid,time)
	local dir = getCreatureLookDir(cid)
	local id = isInArray({1,3},getCreatureLookDir(cid)) and 7267 or 7266
	local place = getPosByDir(getThingPos(cid),dir,1)
	if isWalkable(place,true,true,true) then
		doRemoveItem( getTileItemById(getThingPos(cid),7267).uid > 0 and getTileItemById(getThingPos(cid),7267).uid or getTileItemById(getThingPos(cid),7266).uid )
		doTeleportThing(cid,place,false)
		addEvent(doSendMagicEffect,time+10,place,34)
		doCreateItem(id,1,place)
		if carMove(cid) then
			addEvent(move,time,cid,getCarSpeed(cid))
		else
			doRemoveCondition(cid,CONDITION_INFIGHT)
			doRemoveItem( getTileItemById(getThingPos(cid),7267).uid > 0 and getTileItemById(getThingPos(cid),7267).uid or getTileItemById(getThingPos(cid),7266).uid )
		end
	else
		doCreatureSetNoMove(cid, 0)
		doPlayerSendTextMessage(cid,27,"You have hit something.")
		setCarStatus(cid,0)
		doRemoveCondition(cid,CONDITION_INFIGHT)
		if cfg.Car_Explode then
			doRemoveItem( getTileItemById(getThingPos(cid),7267).uid > 0 and getTileItemById(getThingPos(cid),7267).uid or getTileItemById(getThingPos(cid),7266).uid )
			doSendAnimatedText(getThingPos(cid),"Crashed",TEXTCOLOR_RED)
			doSendMagicEffect(getThingPos(cid),31)
		end
	end
end
 
--<< Functions Ends <<--
 
local fight = createConditionObject(CONDITION_INFIGHT,-1)
function onSay(cid, words, param, channel)
	if param == "speed" then
		if carMove(cid) then
			if getCarSpeed(cid) > cfg.max_speed then
				setCarSpeed(cid,-(cfg.Increase_per_command))
				addEvent(doSendAnimatedText,10,getThingPos(cid),"Speeding",TEXTCOLOR_GREEN)
			else
				setCarSpeed(cid,cfg.max_speed)
				doPlayerSendCancel(cid,"The car is in its maximum speed.")
			end
		else
			doPlayerSendCancel(cid,"You should start moving first.")
		end
	elseif param == "slow" then
		if carMove(cid) then
			if getCarSpeed(cid) < cfg.min_speed then
				setCarSpeed(cid,cfg.Increase_per_command)
				addEvent(doSendAnimatedText,10,getThingPos(cid),"Slowing",TEXTCOLOR_GREEN)
			else
				setCarSpeed(cid,cfg.min_speed)
				doPlayerSendCancel(cid,"The car is in its minumium speed.")
			end
		else
			doPlayerSendCancel(cid,"You should start moving first.")
		end
	elseif param == "stop" then
		if carMove(cid) then
			setCarStatus(cid,0)
			doSendAnimatedText(getThingPos(cid),"Stopped!",TEXTCOLOR_RED)
 
		else
			doPlayerSendCancel(cid,"Car is already stopped.")
		end
	elseif param == "move" then
			if not carMove(cid) then
				if getTileItemById(getThingPos(cid),7267).uid < 1 and  getTileItemById(getThingPos(cid),7266).uid < 1 then 
					local item = isInArray({1,3},getCreatureLookDir(cid)) and 7267 or 7266
					doCreateItem(item,1,getThingPos(cid))
				end
				setPlayerStorageValue(cid,storages.speed,cfg.min_speed)
				setCarStatus(cid,1)
				doCreatureSetNoMove(cid, 1)
				move(cid,getCarSpeed(cid))
					else
				doPlayerSendCancel(cid,"Car is already moving.")
			end
	end
 
	return true
end


Car id : 7267!...
How to make it move?
!car move > move car!
How to make it more speedy?
!car speed > Speed the car
How to make it downgrade speed to slow
!car slow > Slow the car!
How to stop the car if i'm going to dangerous way..
!car stop > Stop the car!
_________________________________________________
Thanks :).. Rep me if your helped!
 
Hahaha it was epic.
He asked about make races like 'elfs', 'dwarfs' etc.

IMHO this script from link should work on TFS 0.4, without any changes.
 
Back
Top